2009-12-19 2 views
4

Символ трубы | используется в регулярном выражении как своего рода «любое» утверждение, насколько я знаю. Либо это, либо то, или то, или что, и т. Д.Проверить символ трубы с помощью регулярного выражения

Однако, я хочу проверить строку с регулярным выражением для наличия этого символа. Я пытался убежать от него, но это, похоже, не работает.

Как я могу сделать это, особенно, если я уже проверку ряда символов присутствовать, как #, &, @, и т.д ...

ответ

4
$ cat 1933190.php 

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

Выход:

$ php 1933190.php 
0 
1 
+0

Спасибо за ясный пример. – KdgDev

7

Спасаясь этим символом является правильным путем. Но убедитесь, что вы избежать экранирующих символов в строке декларации, а также:

"\\|" 
'\\|' 

Другим способом было бы использовать символьный класс ([|]), так как там у вас есть только символы ], ^ (только на start), -, escape-символ \ сам и разделитель, которые имеют особое значение и, следовательно, должны быть экранированы, если они предназначены для выражения в виде простых символов.

+0

И каретка символ^только имеет особое значение, если оно является первым символом в классе символов, т.е. [^ |] и [| ^] будет вести себя по-разному. –