0

我一直在为内部网站使用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 搜索),相反它只会让它变得非常慢到我得到的地步来自服务器的超时消息。我一直在尝试各种解决方案,但一直不走运。

有任何想法吗?难道我做错了什么?

谢谢。

(*原始经过大量编辑)。

4

1 回答 1

0

我是否理解正确,会发生这样的事情?

<a href="mailto:<b>email@domain</b>"><b>email@domain</b></a>

为什么不先将标签放入搜索结果中,然后才将“mailto:”锚点应用于电子邮件?在第二步的模式中,添加的 's 很容易被过滤掉。

于 2012-09-13T09:16:24.563 回答