<分区>
我注意到一些用户在 PHP 正则表达式中使用 @ 与“/”,这两者有区别吗?我假设用户偏好处理字符串中的“/”。
$body = preg_replace("@<script[^>]*>.+</script[^>]*>@si", "", $body);
对比
$body = preg_replace("/<script[^>]*>.+<\/script[^>]*>/si", "", $body);
<分区>
我注意到一些用户在 PHP 正则表达式中使用 @ 与“/”,这两者有区别吗?我假设用户偏好处理字符串中的“/”。
$body = preg_replace("@<script[^>]*>.+</script[^>]*>@si", "", $body);
对比
$body = preg_replace("/<script[^>]*>.+<\/script[^>]*>/si", "", $body);
最佳答案
根据 PHP Manual on regex delimiters
A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.
所以从本质上讲,使用斜杠或 @
或 #
之间没有区别。但是请记住,所选分隔符不得出现在正则表达式本身中,否则您将需要对该字符进行转义。
提示:由于 PCRE 允许任何非字母数字、非反斜杠、非空白
作为分隔符,有时最好使用控制字符作为分隔符'预测正在使用的正则表达式的内容。请参见以下示例:
$repl = preg_replace('^K^foo^K', 'bar', 'foo.txt' );
这里的代码使用了一个控制字符^K
(在shell中输入为ctrl-V-K
)
关于PHP 正则表达式 @ vs/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18521213/