0

所以,我有某种数据库,我使用正则表达式来处理所有这些行。但问题是电子邮件部分可能没有或没有单个“@”符号。我决定将@放在域之前(它们并不多),然后删除所有我不需要的@。我使用了一些在线正则表达式构造函数——比如这个http://www.phpliveregex.com/。我得到以下正则表达式将@放在域之前:

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

但它只是行不通。例如:

CynthiaELopezdodgit.com

在这个脚本之后不会改变。

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

4

2 回答 2

7

您需要获取返回值

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

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

于 2013-04-19T14:37:36.373 回答
2

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

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

于 2013-04-19T14:39:51.110 回答