【发布时间】:2016-09-29 12:31:21
【问题描述】:
我有以下正则表达式:
$url = "http://example.com?param=test1\test2\test3\test4";
$cleanUrl = preg_replace('|[^a-z0-9-~+_.?\[\]\^#=!&;,/:%@$\|*`\'<>"()\\x80-\\xff\{\}]|i', '', $url);
我得到以下输出:
但是, 我期待以下输出:
http://example.com?param=test1\test2\test3\test4
我尝试了这个正则表达式,但它不起作用:
$cleanUrl = preg_replace('|[^a-z0-9-~+_.?\[\]\^\\#=!&;,/:%@$\|*`\'<>"()\\x80-\\xff\{\}]|i', '', $url);
^ escaped single quote
【问题讨论】:
-
您确定输入字符串吗?见ideone.com/OnepGA。我认为应该是
$url = "http://example.com?param=test1\\test2\\test3\\test4";。然后使用$cleanUrl = preg_replace('|[^-\\\\a-z0-9~+_.?\[\]\^#=!&;,/:%@$\|*`\'<>"()\x80-\xff\{\}]|i', '', $url);。见this demo。 -
您必须使用 \\\\ 来转义反斜杠。阅读此SO Answer