PHP Regex @ vs /

MKN*_*ons 2 php regex

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

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

VS

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

anu*_*ava 5

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

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

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

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

$repl = preg_replace('^K^foo^K', 'bar', 'foo.txt' );
Run Code Online (Sandbox Code Playgroud)

这里的代码使用的是一个控制字符^K(ctrl-V-K在shell上输入)

  • 旁注:`无法预测正则表达式的内容 - >你大多应该使用`preg_quote()` (2认同)