2013-01-21 89 views
0

請參閱下面的代碼。如何用條件替換此文本?

<p> 
<img src="http://jdjd" alt="" /><br /> 
Hola mama<br /> 
fdffdfdfdfd <img src="http://jdjd" alt="" /><br /> 
<img src="http://jdjd" alt="" /><br /> 
<span>Hola</span> 
</p> 

然後,下面畫它,我已經插三<img>,其中兩個是在一條線上,唯一的元素

enter image description here

注意另一個是旁邊的一個文本(fdffd .. + img)。

我不知道如何解決這個問題,但我想當<img>不是一行中唯一的元素時,插入一個名爲center的類。所以結果將是下一個:

<p> 
<img class="center" src="http://jdjd" alt="" /><br /> 
Hola mama<br /> 
fdffdfdfdfd <img src="http://jdjd" alt="" /><br /> 
<img class="center" src="http://jdjd" alt="" /><br /> 
<span>Hola</span> 
</p> 

我想這可以使用正則表達式解決,但我不知道如何使用它。

+0

你的意思是你想櫻雪rt'中心'當它是唯一的那一行時,不是嗎? – jAC

+0

請嘗試解釋您需要插入「中心」類的確切條件。同時增加你想在哪裏做的細節會有幫助(顯然這不是ASP.Net網站,因爲你不會在這種情況下顯示代碼)。 –

+0

那麼,你想要將該類添加到一行上的任何圖像(或者可能是相反的方式)?只是一個註釋:[正則表達式不能爲你做](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)。你需要一個HTML解析器。 – femtoRgon

回答

0

使用正則表達式:

(</?(?:p|br|span)(?: */)?>\s*<img)([^>]*>\s*</?(?:p|br|span)(?: */)?>)

與替換字符串:

"$1class='center' $2"

說明:

(        (Begin Group 1) 
    </?(?:p|br|span)(?: */)?>  Find an opening or closing p, br or span tag 
    \s*<img[ ]     Followed by the start of a img tag 
)         (End Group 1) 
(        (Begin Group 2) 
    [^>]*>      Followed by the rest of the img tag 
    \s*</?(?:p|br|span)(?: */)?> Followed by an opening or closing p, br or span tag 
)         (End Group 2)