似乎从PHP 5.1.1开始,双引号字符串中的反斜杠也应该打印出来,所以即使您的代码也适用于较新版本的PHP(source)。
可替换地,可以考虑使用单引号字符串文字与'\?'
和'\/'
使得反斜杠被视为文字,而不是一个转义序列的一部分(或者甚至'\\?'
和'\\/'
):
$my_regex = str_replace(array("?", "*", "/"), array('\?', "(.*)", '\/'), "/?hl=*&*$");
// $my_regex = str_replace(array("?", "*", "/"), array('\\?', "(.*)", '\\/'), "/?hl=*&*$");
echo $my_regex;
见PHP demo
见this PHP single-quoted string literal reference:
简单指定一个字符串的方式是用单引号括起来(字符'
)。
要指定文字单引号,请使用反斜线(\
)将其转义。 要指定文字反斜杠,请将其加倍(\\
)。 所有其他反斜杠实例将被视为文字反斜杠:这意味着您可能会习惯的其他转义序列(如\r
或\n
)将按照指定的字面输出,而不是具有任何特殊含义。
$my_regex = str_replace(array("?", "*", "/"), array("\\?", "(.*)", "\\/"), "/?hl=*&*$");
:
否则,您可以在doubel引号字符串字面(demo)中使用双反斜线