Enigmatique STRPOS

Enigmatique STRPOS - PHP - Programmation

Marsh Posté le 17-12-2007 à 23:11:02    

un petit bout de code tout simple (?#@!? :pfff: )
 

Code :
  1. echo '<br>'.$rest2;
  2. $debut = strpos($rest2, '</a>');
  3. echo '<br>'.$debut;


 
donc voici $rest2 dans son état à la ligne 1 :  
Le Titre de Son Site à Lui</a>&nbsp;<a href="http://www.site.com" target="_blank"><img src="/blank.gif" border="0......
 
Je voudrais attraper la chaine qui va du début de $rest2 à </a>&nbsp; (en rouge)
 
et ben, balèze, il trouve rien, il me renvoit $debut = ''
 
pourquoi diantre ?


Message édité par erwan83 le 17-12-2007 à 23:13:08

---------------
http://www.ypikay.com
Reply

Marsh Posté le 17-12-2007 à 23:11:02   

Reply

Marsh Posté le 18-12-2007 à 09:15:26    

strpos retourne la position, pas le reste de la string. Utilise strstr à la place

Reply

Marsh Posté le 18-12-2007 à 09:23:40    

[:rtfm]  
http://fr.php.net/strpos
 

Citation :

strpos — Trouve la position d'un caractère dans une chaîne
int strpos  ( string $haystack  , mixed $needle  [, int $offset  ] )


On te dit d'une part que ça te donne la position et d'autre part que ça retourne un int, c'est quand même assez clair?! non??
Et dans les "voir aussi" qu'est ce qu'on trouve?

Citation :

...et strstr().


Alors pourrais-tu prendre le temps de lire la documentation disponible en français plutôt que de créer un topic au moindre problème?! :o


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 18-12-2007 à 10:56:47    

Vous excitez pas ! Il ne me semble pas qu'il n'a pas compris ce que fait cette fonction, mais que ce qui l'embête, c'est que ladite fonction ne renvoie rien plutôt que de renvoyer la position de "</a>" !


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 18-12-2007 à 11:01:08    

Ouai enfin il nous aide pas non plus...
Il dit que strpos lui renvoie rien, c'est impossible puisque c'est soit FALSE, soit un int.
Ensuite il fait un usage de la fonction (de ce qu'elle renvoie pour être exacte) complètement stupide, s'il avait lu correctement la doc ça n'aurait certainement pas été le cas.


Message édité par dwogsi le 18-12-2007 à 11:02:06

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 18-12-2007 à 11:02:41    

"Le Titre de Son Site à Lui</a>&nbsp;<a href="http://www.site.com" target="_blank"><img src="/blank.gif" border="0"
C'est ce qui est affiché en clair dans le navigateur (équivalent de "Le Titre de Son Site à Lui&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://www.site.com&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/blank.gif&quot; border=&quot;0&quot; )
ou ce que tu vois quand tu regardes le source de la page reçu par le navigateur?


Message édité par omega2 le 18-12-2007 à 11:20:57
Reply

Marsh Posté le 18-12-2007 à 11:03:55    

dwogsi a écrit :

Ouai enfin il nous aide pas non plus...
Il dit que strpos lui renvoie rien, c'est impossible puisque c'est soit FALSE, soit un int.
Ensuite il fait un usage de la fonction (de ce qu'elle renvoie pour être exacte) complètement stupide, s'il avait lu correctement la doc ça n'aurait certainement pas été le cas.


 
 
Si tu lisais le manuel que tu as si bien linké justement, tu aurais pu y lire que, dans certains cas, la fonction peut renvoyer une chaine vide !
 

Citation :


This function may return Boolean FALSE,but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "".


Message édité par kao98 le 18-12-2007 à 11:04:57

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 18-12-2007 à 11:05:48    

Mince, c'est un coup dur ça!
M'enfin quand même, c'est pas du tout adapté à ce qu'il veut faire.
En tout cas pas de la façon dont il l'utilise.

 

Edit :
En fait je persiste.
C'est pas dans la version FR de la doc que je link et puis il ne s'agit que d'une subtilité de PHP, 0 == "" == FALSE.
Donc il conviendrait de faire les bons tests quand on utilise cette fonction, style ===FALSE.
Pas trace de ce genre de test dans son code à ce que je sache.

Message cité 1 fois
Message édité par dwogsi le 18-12-2007 à 11:11:30

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 18-12-2007 à 11:09:44    

dwogsi a écrit :

Mince, c'est un coup dur ça!
M'enfin quand même, c'est pas du tout adapté à ce qu'il veut faire.
En tout cas pas de la façon dont il l'utilise.


Héhé ;)
 
Il a peut être une raison à vouloir utiliser strpos plutôt qu'une fonction d'extraction de chaine ! Quand il fait un echo $debut, c'est peut-être simplement pour essayer de savoir ce que retourne strpos pour pouvoir l'utiliser ensuite, et pas pour afficher ce qu'il souhaite directement !  
 
Donc aidons le à utiliser strpos, et au passage, on peut très bien lui proposer d'autres solutions tout calmement plutôt que de lui balancer un RTFM sans chercher à comprendre ce qu'il veut faire  [:kao98]


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 18-12-2007 à 11:13:12    

Ok alors s'il tiens à utiliser strpos(), qu'il fasse un test avec ===FALSE, ensuite aller voir du côté de substr ou quelque chose comme ça pour récupérer le début de la chaîne à partir du résultat de strpos().


Message édité par dwogsi le 18-12-2007 à 11:15:30

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 18-12-2007 à 11:13:12   

Reply

Marsh Posté le 19-12-2007 à 00:03:50    

Bon j'explique
 
voici le code
 

Code :
  1. $titre2 = strpos($htmline, 'CLASS="TITRE">');
  2. $titre3 = strpos($htmline, '</A> <A');
  3. $rest = substr($htmline, 10, $pos_fin-16);
  4. $rest = substr($rest, $pos_deb+1, strlen($rest)-$pos_deb);
  5. $compteur_lien = $compteur_lien +1;
  6. $lien[$compteur_lien] = $rest;
  7. $temp = $htmline;
  8. $debut = strpos($htmline, 'class=');
  9. $rest = substr($htmline,$debut+27,strlen($htmline));
  10. $debut = strpos($htmline, "a href" );
  11. $rest2 = substr($rest,0,$debut);
  12. echo '<br>... :'.$rest2;
  13. $debut = strpos($rest2, '</a>');
  14. echo '<br>'.$debut;
  15. $rest = substr($htmline, 10, $titre3-16);
  16. $rest = substr($rest, $titre3+1, strlen($rest)-$titre3);
  17. echo '<br>'. $rest;


 
et à la ligne 13 ça merde...
bon c'est encore un peu brouillon mais ça va s'améliorer


Message édité par erwan83 le 19-12-2007 à 00:10:03

---------------
http://www.ypikay.com
Reply

Marsh Posté le 19-12-2007 à 08:51:13    

Relis le topic, on t'as donné toutes les infos dont tu as besoin :jap:


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed