2015-12-22 100 views
1

我正在格式化某個html文本。替換<span text-decoration:用下劃線<u></u>

在那篇文章中,我有幾個<span>標籤具有各種屬性。 我想改變

<span style="text-decoration: underline; color: #993300;">XXXXXXX</span> 

<span style="color:#993300"><u>XXXXXXXX</span> 

所有我曾經

$cont = preg_replace("/<span style=\"text-decoration:\s(.+?)>(.+?)<\/span>/is", "<u>$2</u>", $cont); 

來實現這一目標。但問題是,如果我有多個</span>標籤,那麼腳本將取代<span style="...和最後的</span>

之間的所有內容請大家幫忙。

+0

也許http://www.regular-expressions.info/quickstart.html,節比賽:「貪婪和懶惰重複「可以幫助。 – Lambic

+0

請參閱https://regex101.com/r/iQ0pU7/1 –

回答

0

試試這個

preg_replace("/(<span\s*style\s*=\s*\"[^\"]*?)text-decoration\s*:\s*underline\s*;([^\"]*\"\s*>)((.(?!<\/span>))+)<\/span>/is", "$1$2<u>$3</u><\/span>") 

凡想法是每一個字符,直到</span>

(.(?!<\/span>))+ 
0

您可以通過使用JQuery解決這個問題:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('span').css('color', '#993300'); 
    $('span').css('text-decoration', 'none'); 
}); 
</script> 

如果你是新上JQuery不是包含在<head>像這樣的例子jQuery庫IST:

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
</head> 

現在你可以使用以上代碼,它會工作。

+0

現在我正在使用 \t $ cont = preg_replace(「/ >(。+? )<\/span> /是「,」$ 1「,$ cont); \t $ CONT = preg_replace函數( 「/的(+)<\/span> /是」, 「 $ 2」,$續); –

+0

@DevTest:爲什麼用的preg_replace ?,我的回答不起作用? – devpro

+0

其實,我對JavaScript/jQuery不太熟悉:-) 我不知道該如何使用它,並要求你幫忙這麼做太多了:-) –