Problème avec Strpos

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec Strpos

Re: Problème avec Strpos

par jc67 » 24 août 2011, 13:05

hello

oui j'ai effectivement une boucle dans mon code, mais même dans la boucle il
ne prends pas le prochain :FIN, il prends le dernier ;)

je vais effectivement passer à l'autre solution, mais là y'a un bug que je ne comprends pas...

Merci encore,

JC

ca fonctionne ainsi

par sirakawa » 24 août 2011, 12:58

<?PHP
$chaine = "INSERT:mapremiereinfo:FIN bla bla INSERT:madeuxiemeinfo:FIN bla bla INSERT:matroisiemeinfo:FIN";
$debut   = strpos($chaine, 'INSERT:');
$fin     = strpos($chaine, ':FIN');
$contenu = substr($chaine, $debut, $fin+4); 
print "$contenu";
?>
mais le probleme de cette façon de procéder, c'est qu'il est nécessaire de boucler avec des $debut = strpos($chaine,"INSERT:', $fin); ...
il est infinimentplus simple de passer par preg_match_all
cf : http://www.expreg.com/pregmatchall.php

Re: Problème avec Strpos

par jc67 » 24 août 2011, 11:41

ça m'a l'air d'une bonne idée ;) je vais essayer, merci à toi,

cela dit je ne comprends pas trop pourquoi la première façon bug...

JC

Re: Problème avec Strpos

par popy » 24 août 2011, 11:24

preg_match_all('/INSERT:(.*?):FIN/', $subject, $matches);


foreach ($matches[1] as $valeur) {
}

Problème avec Strpos

par jc67 » 24 août 2011, 09:53

Bonjour à tous,

voilà des jours que je ne trouve pas solution à mon problème, j'espère que vous pourrez m'éclairer,

j'ai créé un code pour récupérer dans une chaine du texte entouré par deux éléments : INSERT: et :FIN
qui ressemble à ceci : INSERT:mapremiereinfo:FIN

je commence par chercher dans la chaine avec strpos :

Code : Tout sélectionner

$debut = strpos($chaine, 'INSERT:'); $fin = strpos($chaine, ':FIN'); $contenu = substr($chaine, $debut, $fin);
jusque là ça fonctionne, le problème se pose quand j'ai plusieurs éléments dans la chaine, exemple :
INSERT:mapremiereinfo:FIN bla bla INSERT:madeuxiemeinfo:FIN bla bla INSERT:matroisiemeinfo:FIN

dans ce cas, si je lis bien la définition de strpos, il doit me chercher la première occurence, or là $fin
correspond à la dernière, du coup je récupère ceci :
INSERT:mapremiereinfo:FIN bla bla INSERT:madeuxiemeinfo:FIN bla bla INSERT:matroisiemeinfo:FIN

au lieu de INSERT:mapremiereinfo:FIN

quelqu'un aurait une idée ??

Merci,

JC