我一直在为内部网站使用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>
我尝试向“限制”参数添加一个值:
while (preg_match("/[^\>](".$change.")[^\<]/i", " ".$fulltxt." ", $regs)) {
$fulltxt = preg_replace("/".$regs[1]."/i", "<b>".$regs[1]."</b>", $fulltxt, 1);
}
假设这应该是我的问题的解决方案,只需简单地替换第一次出现(作为模式的名称是 name-phone num-email 并且我们总是按 name 搜索),相反它只会让它变得非常慢到我得到的地步来自服务器的超时消息。我一直在尝试各种解决方案,但一直不走运。
有任何想法吗?难道我做错了什么?
谢谢。
(*原始经过大量编辑)。