PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 16-08-2011 15:18:35

abb
Membre
Inscription : 16-08-2011
Messages : 4

strpos()

Bonjour,
j'ai un problème avec strpos()

ici la fonction qui marche nickel:

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);
if ($pos === false) {
    echo "La chaîne '$findme' n'a pas été trouvée dans la chaîne '$mystring'";
} else {
    echo "La chaîne '$findme' a été trouvée dans la chaîne '$mystring'";
}
?>

Ici la mienne qui ne marche pas à cause des caractères spéciaux (enfin je pense):

<?php
$mystring = '728px;"> <tr > <td nowrap="nowrap" class="date"> ';
$findme   = '<td nowrap="nowrap">';
$pos = strpos($mystring, $findme);

j'ai essayé les commandes permettant de rajouter des \ sur les caractères spéciaux mais rien n'y fait.

Pouvez-vous m'aider?

Merci par avance,

Dernière modification par abb (16-08-2011 15:43:01)

Hors ligne

#2 17-08-2011 05:41:32

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : strpos()

Bonjour

Il n'y a aucun problème dans ton code...
Il faut juste savoir que strpos recherche exactement ce qu'on lui demande de trouver. Or '<td nowrap="nowrap">' n'existe pas dans $mystring contrairement à '<td nowrap="nowrap" ' qui lui sera trouvé. Cela n'est pas plus compliqué que cela.

bonne continuation.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 17-08-2011 08:02:05

abb
Membre
Inscription : 16-08-2011
Messages : 4

Re : strpos()

Effectivement dans mon message j'ai bien looser...
J'ai voulu simplifier mon code pour qu'un max de personne puisse répondre mais c'était pas une bonne idée sad

Voila mon code


$url = '[url]http://www.google.fr[/url]';
$http_page = file_get_contents($url);
$http_page_ = htmlspecialchars($http_page);
$findme   = ('<a href="http://www.google.fr');
$pos = strpos($http_page_, $findme);

if ($pos === false) {
    echo "The string '$findme' was not found'";
} else {
    echo "The string '$findme' was found '";
    echo " and exists at position $pos";
}

 

Voila le résultat:
The string '

Merci pour votre aide

Dernière modification par abb (17-08-2011 08:04:39)

Hors ligne

#4 17-08-2011 08:54:44

Mkely
Membre
Inscription : 30-07-2011
Messages : 7

Re : strpos()

svp à quoi sert l'attribut nowrap dans une balise svp?.

Hors ligne

#5 17-08-2011 16:30:25

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : strpos()

Encore une fois, (décidément je me répète), strpos recherche exactement ce qu'on lui demande.
Or ton href dans ta balise <a .... > peut se placer n'importe où à l'intérieur... et par conséquent par forcément juste après le <a ... donc? si c'est le cas, il ne trouvera rien!
Pour des recherches contextuelles particulières voire multiples, je te recommande d'utiliser les regexp, beaucoup plus adaptées.
Nowrap sert à éviter les césures de mots en fin de ligne ou en fin de délimitation d'objet à l'affichage.

Cordialement,

Jc

Dernière modification par Jc (17-08-2011 16:31:11)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 18-08-2011 08:29:36

abb
Membre
Inscription : 16-08-2011
Messages : 4

Re : strpos()

Bin la pour le coup je suis pas d'accord.

j'ai bien pris en compte ta remarque et j'ai fais un echo de $http_page_ pour être sur de rechercher une bonne chose.
Ça marche très bien si je cherche 'www.google.fr' mais si je cherche '<a' la ça ne fonctionne plus. C'est donc bien un problème de caractère spécial.

C'est dommage que ce la ne fonctionne pas car j'ai l’impression que les regexp sont plus complexes. Dans mon cas, le strpos répondait à tous mes besoins.

Hors ligne

#7 18-08-2011 15:32:02

abb
Membre
Inscription : 16-08-2011
Messages : 4

Re : strpos()

C'est bon j'ai trouvé il fallait regarder la source de la page et non le echo de mon http_page. Ca m'a permit de passer les caractères spéciaux.
Merci

Hors ligne

Pied de page des forums