PHP中的正则表达式行为异常

PHP中的正则表达式行为异常,php,regex,preg-replace,Php,Regex,Preg Replace,所以,我有一些数据库,我使用正则表达式来处理所有这些行。但问题是在电子邮件部分可能没有或没有单一的“@”符号。我决定把@放在域名之前,它们并不多,然后把所有我不需要的@都去掉。 我使用了一些在线正则表达式构造函数,比如这个。我得到了以下正则表达式,用于将@置于域之前: preg_replace("/(dodgit|trashymail|pookmail|spambob|mailinator)/", "@$1", $myline); 但它就是不起作用。例如: CynthiaELopezdodg

所以,我有一些数据库,我使用正则表达式来处理所有这些行。但问题是在电子邮件部分可能没有或没有单一的“@”符号。我决定把@放在域名之前,它们并不多,然后把所有我不需要的@都去掉。 我使用了一些在线正则表达式构造函数,比如这个。我得到了以下正则表达式,用于将@置于域之前:

preg_replace("/(dodgit|trashymail|pookmail|spambob|mailinator)/", "@$1", $myline); 
但它就是不起作用。例如:

CynthiaELopezdodgit.com
在此脚本之后不会更改


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

您需要获取返回值

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

$newLine将包含带有@的电子邮件,$myline将继续保留不带@的电子邮件。preg_replace不会改变原始变量,您的正则表达式工作正常。我会检查以确保您看到的变量是正确的。preg_replace不会覆盖变量,而是返回它

例如: