the-Trancer
Aug 19 2008, 02:43 PM
Bonjour !
J'aimerais une aide pour formuler mon pattern, je n'arrive pas faire quelque chose de satisfaisant...
La difficulté étant de trouve le mot clés "all" et non un autre mot comme "allll" ou "aaall" ou "alltest" bref... Ce mot clés, "all", se trouve dans une chaîne composé comme ceci :
$chaine = "mot1|mot2|motn|all"; // all peut très bien être au début comme au milieux, ou a la fin.
Je précise que la longueur de la chaine est inconnu et la position de all aussi
J'étais partis sur preg_match("/[^a-zA-Z0-9]*all[^a-zA-Z0-9]*/", $chaine) mais c'est pas terrible du tout.
Merci pour votre aide,
Sébastien.
neolao
Aug 19 2008, 04:07 PM
Tu veux juste connaitre l'exitence de "all" dans ton string, c'est ça
Astuce :
PHP
$chaine = "mot1|mot2|motn|all";
// hop j'ajoute des pipes devant et derrière
$chaine = "|".$chaine."|";
$resultat = strpos($chaine, "|all|");
if ($resultat !== false) {
// OK, il y est
}
the-Trancer
Aug 19 2008, 06:02 PM
Mmmmmm c'est pas con du tout !
J'ai même pas pensé a mettre des pipes en plus.
Du coups je retiens ta soluce, puisque je crois que les str sont plus rapide.
strpos("|" . $chaine . "|", "|all|") !== false
Merci,
Sébastien.
Antoine
Aug 29 2008, 08:53 AM
A priori, le pattern suivant suffit (si tu veux toujours faire à l'aide d'expression régulière)
Code
/(?:[^a])(all)(?:[^l])/
Je mets mon post à titre d'exemple, on ne sait jamais que cela puisse être utile à quelqu'un d'autre