Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,如何转义作为变量的正则表达式?_Php_Regex - Fatal编程技术网

在PHP中,如何转义作为变量的正则表达式?

在PHP中,如何转义作为变量的正则表达式?,php,regex,Php,Regex,我有一个变量,它将包含一个相对URL(即.../test.html),我想使用该URL变量并用一个绝对变量替换它。无论如何,我想知道当字符串包含需要在正则表达式中转义的字符时,是否有更优雅的方法来转义字符串。我做了以下工作: str_replace(array(".","/"), array("\\.","\\/"), $urls[0][$key]) 但我认为有一个更好的方法可以用preg_替换,但我似乎无法让它工作。我使用反向引用尝试了以下操作: preg_replace('/[\.\/]/

我有一个变量,它将包含一个相对URL(即.../test.html),我想使用该URL变量并用一个绝对变量替换它。无论如何,我想知道当字符串包含需要在正则表达式中转义的字符时,是否有更优雅的方法来转义字符串。我做了以下工作:

str_replace(array(".","/"), array("\\.","\\/"), $urls[0][$key])
但我认为有一个更好的方法可以用preg_替换,但我似乎无法让它工作。我使用反向引用尝试了以下操作:

preg_replace('/[\.\/]/i', '\\\1', $urls[0][$key])
这似乎不起作用,可能是因为PHP在preg_replace中转义某些字符的方式:

当使用e修饰符时,此函数将在替换反向引用的字符串中转义一些字符(即“,”,\和NULL)

有人知道我怎样才能让preg_替换工作吗

感谢您的帮助!

。此外,并非所有内容都是变量。它不是绝对变量,您只是将变量替换为表示绝对路径的字符串。

。此外,并非所有内容都是变量。它不是绝对变量,您只是将变量替换为表示绝对路径的字符串