1

我知道这可以使用 Outlook 中的设置来完成,但这只会为我自己解决问题。

我想做的是使用 PHP 来防止文本被超链接仅仅因为有一个 @ 符号等......

据我所知,对我来说唯一的选择是将所有 @ 符号编码为它们的 HTML 数字实体,如下所示:

像这样的东西:

$message = str_replace('@','@',$message);

但是,如果可能的话,如果@ 符号是电子邮件地址的一部分,我不希望这种情况发生。

因此我需要这样的东西:

// SOME_REGEX will match any @ sign that is NOT part of an email address
$message = preg_replace('SOME_REGEX','@',$message);

有人能想到其他更好的方法吗?这个计划有什么缺陷吗?任何人都可以为此建议一个好的正则表达式吗?如果它不是电子邮件地址的一部分,我正在努力编写与 @ 符号匹配的正则表达式

提前致谢

4

2 回答 2

1

如果电子邮件地址包含在修剪列表中未定义的任何内容中,这将不起作用。

$chunked_message = explode(" ", $message);

foreach($chunked_message as $chunk) {
    $clean_chunked_message[] = 
               (!filter_var(trim($chunk, " -().?!\t\r\n", FILTER_VALIDATE_EMAIL)) 
               ? str_replace('@', '@' $chunk) : $chunk;
}

$clean_message = implode(" ", $clean_chunked_message);

祝你好运。

于 2012-04-20T09:51:23.407 回答
0

这是邮件应用程序的一项功能,可在找到链接时检测链接并使其可点击。

逃避这种情况的一个肮脏技巧是在链接之间使用空间。

例子:

http://ww w.you tube.com/v=.......
于 2012-04-20T09:39:29.987 回答