2013-07-27 18 views
0

我可以編寫哪些PHP或jQuery,可以自動查找元素中的第一個短語實例(例如「Daily Digest」)(通常爲<p>標籤),並自動添加與我選擇的類文本跨度?查找元素內部字符串的第一個實例並在其中添加標籤

換句話說,我希望頁面上任何元素內的短語「每日摘要」的第一個實例以紅色突出顯示,而用戶不必在文本本身上添加跨度(因爲人們使用該網站代碼不識字)。如果該短語在div或其他元素中多次使用,我只想要突出顯示第一個實例。

+1

PHP不會操縱現有的DOM的方式。你需要看看Javascript和jQuery。使用jQuery,它會非常簡單。 – DevlshOne

+0

你能顯示你的代碼嗎? –

+0

您可以使用[PHP DOM](http://php.net/manual/en/book.dom.php)或簡單的[preg_replace](http://php.net/manual/en/function.preg-replace .php) – bansi

回答

2

試試這個:

$content = preg_replace('/'.$word.'/i', '<span class="red">$0</span>', $content); 

結帳更多的preg_replace。

代碼測試。有用。

+0

不應該使用'$ 0'嗎?沒有捕獲組... – elclanrs

+0

$ 0替換所有匹配的模式,而$ 1只是第一個。在這種情況下,它們是相同的,因爲它只有一種模式。 – Ula

+0

我很確定這不會起作用,你試過了嗎?沒有捕獲組,所以'$ 1'不可用。 – elclanrs

1
$(body).filter(function() { 
     return $("p", this).text() == "Daily Digest"; 
    }).wrapAll("<span class='myClass'></span>"); 

注意 - 這會發現所有的<p>Daily Digest</p>的實例,並將其轉化爲<span class='myClass'><p>Daily Digest</p></span>。我會讓你研究如何在某個元素內的第一個實例上做到這一點。

+0

這似乎並不奏效 - 請參閱小提琴:http://jsfiddle.net/AzbBB/ –

相關問題