PHP中的正则表达式表现得很奇怪

时间:2013-04-19 14:33:24

标签: php regex preg-replace

所以,我有一些数据库,我使用正则表达式处理所有这些行。但问题是电子邮件部分可能没有或没有单个“@”符号。我决定在域之前放置@(其中没有很多)然后只删除我不需要的所有@。 我使用了一些在线正则表达式构造函数 - 就像这个http://www.phpliveregex.com/一样。我得到了以下正则表达式,用于在域名之前放置@:

preg_replace("/(dodgit|trashymail|pookmail|spambob|mailinator)/", "@$1", $myline); 

但它不起作用。例如:

CynthiaELopezdodgit.com

在此脚本之后不会更改。

有什么不对?我是PHP的新手,很抱歉,如果问题真的很愚蠢:)

2 个答案:

答案 0 :(得分:7)

您需要获得返回值

$newLine = preg_replace("/(dodgit|trashymail|pookmail|spambob|mailinator)/", "@$1", $myline);

$ newLine将包含带@的电子邮件,$ myline将继续保留没有的电子邮件。 preg_replace不会改变原始变量

答案 1 :(得分:2)

你的正则表达式正常。我会检查以确保你正在查看正确的变量。 preg_replace不会覆盖变量,而是返回变量。

对于一个工作示例:http://codepad.org/PSxK7Jtv