2

我注意到有些用户在 PHP 正则表达式中使用 @ 与 "/",这两者有区别吗?我假设在字符串中处理“/”是用户的偏好。

$body = preg_replace("@<script[^>]*>.+</script[^>]*>@si", "", $body);

对比

$body = preg_replace("/<script[^>]*>.+<\/script[^>]*>/si", "", $body);
4

2 回答 2

5

根据正则表达式分隔符的 PHP 手册

定界符可以是任何非字母数字、非反斜杠、非空白字符。

@所以基本上使用斜线或或之间没有区别#。但是请记住,选择的分隔符不能出现在正则表达式本身中,否则您将需要转义该字符。

提示:由于 PCRE 允许any non-alphanumeric, non-backslash, non-whitespace作为分隔符,因此当您无法预测正在使用的正则表达式的内容时,有时最好使用控制字符作为分隔符。请参见下面的示例:

$repl = preg_replace('^K^foo^K', 'bar', 'foo.txt' );

此处代码使用控制字符^Kctrl-V-K在 shell 上键入)

于 2013-08-29T21:33:27.550 回答
3

使用/使得将 a/放入正则表达式或替换变得更加困难。使用@使得将 a@放入正则表达式或替换变得更加困难。除此之外,没有任何区别。

于 2013-08-29T21:26:36.180 回答