2014-01-14 81 views
0

我正在使用SimpleXML從XML文檔獲取一些數據,並且如果數據包含搜索詞,那麼我希望它突出顯示。因此用戶首先輸入一個搜索詞,然後處理XML文檔,逐個元素地執行並執行字符串搜索。我已經知道如何使用SimpleXML,但我不確定如何找到不區分大小寫的字符串,並將其替換爲自身加上一些標記。查找不區分大小寫的字符串並替換(PHP)

  • 用戶輸入「brown fox」(不含引號)作爲搜索詞。
  • Web服務器遍歷所有XML元素並查找不區分大小寫的匹配(每個元素一個或多個)。
  • 如果匹配(一個或多個),則不區分大小寫的術語將替換爲其自身和一些用於標記的HTML代碼。否則,元素文本只是在沒有標記的情況下輸出。

如果文檔中包含:「快速的棕色狐狸跳過懶狗。」那麼輸出應該是相同的字符串,但通過CSS突出顯示「brown fox」。

+0

的可能重複(http://stackoverflow.com/questions/2893551/case-insensitive-匹配在xpath) – Phil

+0

到目前爲止,你有什麼嘗試?正如所寫的,我們沒有上下文來將解決方案插入到您當前的代碼中。 – bishop

+0

解決方案不必適合我的代碼。我使用的是XML,但是一個簡單的字符串示例就足夠了。 – HelloWorld

回答

0

這可能會爲你工作:?XPath中不區分大小寫匹配]

<?php 
$html = "The quick brown fox jumps over the lazy dog"; 
$replace = preg_replace('/\A(.*?)(brown fox)(.*?)\z/sim', '$1<span STYLE="font-size: x-large; color: #ffffff">$2</span>$3', $html); 
echo $replace; 
// The quick <span STYLE="font-size: x-large; color: #ffffff">brown fox</span> jumps over the lazy dog 
?> 

DEMO

+0

它的確如此,但是我希望我能夠做到沒有正則表達式,因爲它們對我沒有任何意義。你能解釋一下這些符號的含義嗎? – HelloWorld

+0

您可以重寫正則表達式,以便突出顯示多個術語嗎? – HelloWorld

相關問題