2010-07-26 9 views
1

Ok Im essayant de comprendre cette regex où j'ai un mot, et à chaque extrémité du mot, il peut être un espace ou aucun caractère. Voici un exemple:PHP regex, espace ou aucun caractère

preg_match_all("/(?)(" . $piece . ")(?)/is", $fk, $sub); 

(?) est que je veux que ce soit « Un seul caractère qui ne peut être un espace ou pas de caractère du tout ». Je suis en train d'essayer de faire une fonction qui vérifie si quelque chose est un mot ou non en fonction de ses caractères environnants. Et $piece est le mot, donc Il doit être par lui-même, ne fait pas partie d'un autre mot plus long si vous savez ce que je veux dire. Merci

+1

Peut-être que vous cherchez l'expression de limite de mot '\ b'. – Gumbo

Répondre

5

Pour tester un espace ou pas de caractère, utilisez la syntaxe suivante:

preg_match_all("/(^|)(" . $piece . ")(|$)/is", $fk, $sub);

Le (^|) signifie: match soit début de la chaîne (que l'on appelle « pas de caractère ») ou de l'espace. Le (|$) signifie: Match l'espace ou la fin de la chaîne (encore, un "aucun caractère"). Le début et la fin d'une chaîne sont les seuls endroits où il n'y a pas de caractère.

+0

L'utilisation de \ b ne serait-elle pas plus appropriée? –

+1

\ b correspond aux caractères non-mots. Il a spécifiquement demandé "aucun omble" ou espace. \ b correspond par exemple (qui n'est ni l'un ni l'autre. – jmz