php preg_match在标志

时间:2012-06-13 21:47:10

标签: php regex preg-match

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

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)

他们都没有工作。

2 个答案:

答案 0 :(得分:4)

对于子孙后代:如果有人因为在正则表达式中使用at-signs而感到困惑,因为正则表达式是其他人代码的一部分,@偶尔会被用作开头和结尾regex-delimiter }。以下引用还涉及为什么OP尝试匹配文字“@”不成功(强调我的):

  

使用PCRE功能时, 必需 模式由分隔符包围。分隔符可以是任何非字母数字,非反斜杠,非空白字符。

换句话说,任何正则表达式字符串必须以字符类[^A-Za-z\s\\]标识的匹配字符开头和结尾,或者 - 如果您觉得可以处理任何字符令他们头疼的问题可能会导致你 - 一对匹配的分组字符<> {} [] ()

答案 1 :(得分:1)

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

正确的是~@~

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

str_replace("@", "", $content)