我一直在使用内部网站的Sphider搜索引擎,我们需要能够快速搜索导出的.htm(l)文件中的联系人详细信息。
$fulltxt = ereg_replace("[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,3})", "<a href=\"mailto:\\0\">\\0</a>", $fulltxt);
我正在使用方便的mailto:链接替换电子邮件地址,以便用户可以直接从搜索结果中打开Outlook。
然而,
while (preg_match("/[^\>](".$change.")[^\<]/i", " ".$fulltxt." ", $regs)) {
$fulltxt = preg_replace("/".$regs[1]."/i", "<b>".$regs[1]."</b>", $fulltxt);
}
它将搜索结果中的所有匹配项替换为粗体标记,这些标记重新包含在Outlook的“收件人...”字段中。在HTML中看起来像这样(感谢 Yuriy ):
<a href="mailto:<b>name</b>.surname@domain"><b>name</b>.surname@domain</a>
我尝试在'limit'参数中添加一个值:
while (preg_match("/[^\>](".$change.")[^\<]/i", " ".$fulltxt." ", $regs)) {
$fulltxt = preg_replace("/".$regs[1]."/i", "<b>".$regs[1]."</b>", $fulltxt, 1);
}
假设这应该是我的问题的解决方案,只需更换第一次出现(作为模式的名称是名称 - 电话号码 - 电子邮件和我们总是按名称搜索),而不是只是让我从服务器获得超时消息的速度非常慢。我一直在尝试各种解决方案但运气不好。
有什么想法吗?我做错了吗?
感谢。
(*原版经过大量编辑)。
答案 0 :(得分:0)
我是否理解你这样的事情发生了?
<a href="mailto:<b>email@domain</b>"><b>email@domain</b></a>
为什么不首先将标签放入搜索结果中,然后才将“mailto:”锚点应用于电子邮件?在第二步中,添加的内容很容易过滤掉。