странное поведение preg_quote - PullRequest
0 голосов
/ 18 июля 2011

У меня есть этот код

<?php
$a = "\\u0000";
$b =  preg_quote($a);
echo "<br />my own: ".$a;
echo "<br />with preg_quote:". $b;
?>

результат здесь

Как возможно, что один \ символ исчез из моей переменной $a?

Я думаю, что это очень плохое поведение / вопрос, но я действительно потерян из-за этих escape-символов.

Отказ от ответственности: я не начинающий в PHP

Ответы [ 5 ]

3 голосов
/ 18 июля 2011

потому что \ экранирует следующий, поскольку каждый \ должен быть экранирован.

с одним \ он экранирует следующий символ, который есть у вас, но \ u не является символом кодапоэтому он отображается как простой символ

1 голос
/ 18 июля 2011

\\ - экранированная версия \.Таким образом, исходная строка при печати отображает только один \.Однако preg_quote экранирует символ \ с другим \ и, таким образом, приводит к \\.

1 голос
/ 18 июля 2011

в $ a двойной обратный слеш оценивается как экранированный обратный слеш, приводящий к одному обратному слешу в выходных данных.

в $ b preg_quote будет экранировать оба обратных слеша, поскольку они являются метасимволами регулярных выражений.приводит к четырем обратным слешам подряд, приводит к двум обратным слешам в вашем выводе.

1 голос
/ 18 июля 2011
$a="\\"; 

// $a теперь \, потому что сначала \ экранирует другую \

все в порядке

1 голос
/ 18 июля 2011

потому что \ имеет значение в строке.

т.е. \n - код символа для новой строки

so \\ является экранированной версией обратной косой черты и имеет значение \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...