所以,我有一些数据库,我使用正则表达式处理所有这些行。但问题是电子邮件部分可能没有或没有单个“@”符号。我决定在域之前放置@(其中没有很多)然后只删除我不需要的所有@。 我使用了一些在线正则表达式构造函数 - 就像这个http://www.phpliveregex.com/一样。我得到了以下正则表达式,用于在域名之前放置@:
preg_replace("/(dodgit|trashymail|pookmail|spambob|mailinator)/", "@$1", $myline);
但它不起作用。例如:
CynthiaELopezdodgit.com
在此脚本之后不会更改。
有什么不对?我是PHP的新手,很抱歉,如果问题真的很愚蠢:)
答案 0 :(得分:7)
您需要获得返回值
$newLine = preg_replace("/(dodgit|trashymail|pookmail|spambob|mailinator)/", "@$1", $myline);
$ newLine将包含带@的电子邮件,$ myline将继续保留没有的电子邮件。 preg_replace不会改变原始变量
答案 1 :(得分:2)
你的正则表达式正常。我会检查以确保你正在查看正确的变量。 preg_replace
不会覆盖变量,而是返回变量。
对于一个工作示例:http://codepad.org/PSxK7Jtv