PHP Regex @ vs /

时间:2013-08-29 21:24:36

标签: php regex

我注意到有些用户在PHP正则表达式中使用@ vs“/”,两者之间有区别吗?我假设它是用户首选项来处理字符串中的“/”。

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

VS

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

2 个答案:

答案 0 :(得分:5)

根据PHP Manual on regex delimiters

  

分隔符可以是任何非字母数字,非反斜杠,非空格   字符。

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

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

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

此处此代码使用控件字符^K(在shell上键入为ctrl-V-K

答案 1 :(得分:3)

使用/会使/更加难以置于正则表达式或替换中。使用@会使@更加难以置于正则表达式或替换中。除此之外,没有区别。