|
|
|
| Как экранировать знак равно в регулярных выражениях?
Вот этот шаблон не срабатывает
'/^[ёЁа-яА-Яa-zA-Z0-9\-\s_' . preg_quote('\'".,/\+!@№%&*(){}[]:;?<>=') . ']+$/iu'
|
Равно не экранируется, все остальные символы нормально. | |
|
|
|
|
|
|
|
для: levsha
(24.03.2009 в 22:22)
| | 1. а зачем его экранировать в символьном диапазоне?
2. и если заэкранировать его руками ( как минус в этом же шаблоне) - что-нибудь меняется? | |
|
|
|
|
|
|
|
для: Trianon
(24.03.2009 в 22:28)
| | 1. Так он мне нужен именно как символ, а не его системное значение.
2. Вручную тоже ничего не выходит | |
|
|
|
|
|
|
|
для: levsha
(24.03.2009 в 23:28)
| | 1.у него нет специальных значений в контексте символьного диапазона.
да и в прочих контекстах шаблона, по-моему, тоже нет.
2. что лишь подтверждает факт 1. | |
|
|
|
|
|
|
|
для: Trianon
(24.03.2009 в 23:33)
| | хз, ну и как мне его включить в символьный диапазон тогда? | |
|
|
|
|
|
|
|
для: levsha
(25.03.2009 в 10:03)
| | если скрипт сам в кодировке utf8, то так:
<?
$pattern = '/^[№ёЁа-яА-Яa-zA-Z0-9\-\s_\/'
. preg_quote('\'".,\+!@%&*(){}[]:;?<>=')
. ']+$/iu';
|
если скрипт в 1251 , то так:
<?
$pattern = '/^['.iconv('windows-1251', 'utf-8','№ёЁа-яА-Я').'a-zA-Z0-9\-\s_\/'
. preg_quote('\'".,\+!@%&*(){}[]:;?<>=')
. ']+$/iu';
|
<?
var_dump(preg_match($pattern, '-=-'));
?>
|
ошибки были в том, что preg_quote не будет экранировать слэш / , поскольку не знает, что он применен специальным образом. Его нужно заэкранировать принудительно. | |
|
|
|