Aide - Recherche - Membres - Calendrier
Version complète : PCRE preg_match
Forum Développeur - Administration serveur, programmation et base de données > Programmation > PHP
the-Trancer
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
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
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
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 smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.