2

您好,我想在下一行中匹配“@”,

create@create_time:"2012-05-30 21:14:35.0",update_time:"2012-05-31 22:05:46.0"

preg_replace("@", "", $content)

preg_replace("\@", "", $content)

他们都没有工作。

4

2 回答 2

6

对于后代:如果有人偶然发现这一点,因为他们对作为其他人代码一部分的正则表达式中的 at 符号的使用感到困惑,@偶尔将其用作开始和结束regex-delimiter。下面的引用还与为什么 OP 尝试匹配文字 '@' 失败(强调我的)有关:

使用 PCRE 函数时,需要用分隔符将模式括起来。定界符可以是任何非字母数字、非反斜杠、非空白字符。

换句话说,任何正则表达式字符串必须以由字符类标识的匹配字符开始和结束,[^A-Za-z\s\\]或者——如果你觉得你可以处理它们的使用可能会给你带来的任何头痛——一对匹配的分组字符<> {} [] ()

于 2015-09-01T19:24:55.477 回答
1

如果您阅读错误消息,您会发现您的正则表达式缺少分隔符。

一个正确的应该是~@~

但是,在这种情况下你不需要preg_replace,你应该去

str_replace("@", "", $content)
于 2012-06-13T21:48:33.420 回答