我注意到有些用户在 PHP 正则表达式中使用 @ 与 "/",这两者有区别吗?我假设在字符串中处理“/”是用户的偏好。
$body = preg_replace("@<script[^>]*>.+</script[^>]*>@si", "", $body);
对比
$body = preg_replace("/<script[^>]*>.+<\/script[^>]*>/si", "", $body);
定界符可以是任何非字母数字、非反斜杠、非空白字符。
@
所以基本上使用斜线或或之间没有区别#
。但是请记住,选择的分隔符不能出现在正则表达式本身中,否则您将需要转义该字符。
提示:由于 PCRE 允许any non-alphanumeric, non-backslash, non-whitespace
作为分隔符,因此当您无法预测正在使用的正则表达式的内容时,有时最好使用控制字符作为分隔符。请参见下面的示例:
$repl = preg_replace('^K^foo^K', 'bar', 'foo.txt' );
此处代码使用控制字符^K
(ctrl-V-K
在 shell 上键入)
使用/
使得将 a/
放入正则表达式或替换变得更加困难。使用@
使得将 a@
放入正则表达式或替换变得更加困难。除此之外,没有任何区别。