0
我一直在使用Sphider搜索引擎作爲內部網站,我們需要能夠在導出的.htm(l)文件中快速搜索聯繫人詳細信息。preg_replace限制問題,處理數組值
$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);
}
它取代了大膽的標籤的搜索結果,這resuts到標籤的所有比賽被列入Outlook的「到...」字段。它看起來在HTML這樣的事情(感謝尤里):
<a href="mailto:<b>name</b>[email protected]"><b>name</b>[email protected]</a>
我已經嘗試添加一個值到「限價」參數:
while (preg_match("/[^\>](".$change.")[^\<]/i", " ".$fulltxt." ", $regs)) {
$fulltxt = preg_replace("/".$regs[1]."/i", "<b>".$regs[1]."</b>", $fulltxt, 1);
}
Supposingly這應該是解決我的問題通過簡單地只替換第一次出現(作爲模式的名稱是名稱電話號碼電子郵件和我們總是搜索名稱),而只是使它非常慢,我從服務器收到超時消息的點。我一直在嘗試各種解決方案,但運氣不好。
任何想法?難道我做錯了什麼?
謝謝。
(*原始大量編輯)。
是的,這正是發生的情況。我嘗試更換後,它被標記,但然後它不匹配,例如,如果電子郵件是[email protected]它會這樣保羅。你是什麼意思添加還有,我想在HTML mailto代碼中包含一段PHP strip_tags代碼,但是它打印爲純文本,因此無法將其視爲PHP。 – Than9000
因此,只有名稱位是粗體而不是整個電子郵件地址?它是不同的是,你基本上需要你的第二個「大膽的」正則表達式只發生在HTML標籤之外,下面是你的一個類似案例:http://stackoverflow.com/a/10539617/454266 – Yuriy
沒關係,我把我的while()進入一個if(),並且每次進入只執行一次,並沒有完全解決我的問題,而是完成了目前的工作。但是,您的鏈接確實非常有用,並且可以幫助很多,因此我會接受您的答案,謝謝。 – Than9000