PHP 正则表达式 @ vs/

标签 php regex

<分区>

我注意到一些用户在 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/

相关文章:

php - PHP中文件的错误处理

php - 如何使用自定义变量更改 url 变量

regex - 使用负先行正则表达式的 Sed 替换

regex - html5验证正则表达式

c# - C# 中的正则表达式 IsMatch() 方法

regex - 正则表达式关于如何指定输入的混淆

python - Python 中的特殊字符模式匹配

php - Magento 的类图

javascript - Ajax 表单无法使用 event.preventDefault() 阻止页面重新加载;

php - preg_match() : No ending delimiter '/'