我试图想出一种方法来查找字符串中的所有 RegEx 匹配项,然后通过我编写的函数运行所有这些匹配项,但我没有运气。
具体来说,我试图在一个字符串中查找所有电子邮件地址,然后使用一个函数将这些地址转换为有用的 mailto 链接,以隐藏垃圾邮件机器人的地址。
所以我从普通的旧 RegEx 开始,将地址转换为 mailto 链接,这样我就知道匹配有效。
$pattern = '#([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)#i';
$replacement = "<a href='mailto:\\1'>\\1</a>";
$description = preg_replace($pattern, $replacement, $description);
效果很好。到目前为止,一切都很好。但是当我尝试使用我的函数来操作地址字符串时,电子邮件地址不再匹配。
$pattern = '#([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)#i';
$replacement = myFunction('\\1');
$description = preg_replace($pattern, $replacement, $description);
我究竟做错了什么?