2009-12-19 5 views
4

Le symbole de tuyau | est utilisé dans l'expression régulière comme une sorte d'instruction 'soit', autant que je sache. Soit ceci, soit ça, ou ça, etc ...Recherche du symbole de tuyau avec Regex

Cependant, je souhaite vérifier une chaîne avec une expression régulière, pour la présence de ce symbole. J'ai essayé d'y échapper, mais cela ne semble pas fonctionner.

Comment puis-je faire cela, surtout si je vérifie déjà un certain nombre de symboles présents, comme #, &, @, etc ...

Répondre

4
$ cat 1933190.php 

<?php 
    echo preg_match("/\|/", "This is not a pipe.") . "\n"; 
    echo preg_match("/\|/", "The | the | this is a |.") . "\n"; 
?> 

Sortie:

$ php 1933190.php 
0 
1 
+0

Merci pour l'exemple clair. – KdgDev

7

Échapper ce caractère est la bonne façon. Mais assurez-vous que vous échapper les caractères d'échappement dans votre déclaration de chaîne ainsi:

"\\|" 
'\\|' 

Une autre façon serait d'utiliser une classe de caractères ([|]) depuis là vous avez seulement les caractères ], ^ (uniquement au start), -, le caractère d'échappement \ lui-même et le délimiteur qui ont une signification particulière et ont donc besoin d'être échappé si destiné à être exprimé en caractères simples.

+0

Et le caractère caret^a seulement une signification particulière si elle est le premier caractère d'une classe de caractères, à savoir [^ |] et [| ^] se comportent différemment. –