2010-04-07 45 views
4

我正在嘗試執行此正則表達式匹配並替換,但無法執行此操作。PHP正則表達式 - 查找和替換

<SPAN class="one">first content here</SPAN> 
<SPAN class="two">second content here </SPAN> 
<SPAN class="three">one; two; three; and more.</span> 
<SPAN class="four">more content here.</span> 

我想找到每組跨度標籤,並用這樣的

替換查找

<SPAN class="one">first content here</SPAN>

更改爲

<one>first content here</one>

與其餘span標籤相同的方式。

class="one"class="two"等等是我在正則表達式匹配表達式中唯一使用的關鍵標識符。所以如果我找到這些類的span標籤,那麼我想要做替換。我的主要問題是我無法找到第一個結束標記的發生,因此它從開始到結束髮現哪些是沒有用的。到目前爲止,我一直試圖使用記事本++來做到這一點,但只是發現它有其侷限性,所以任何PHP的幫助將不勝感激。

問候

+0

嗨, 我忘了把代碼標記,以便在q被搞砸了。請在下面的回覆帖子中閱讀。 – geej 2010-04-07 16:18:05

+3

XSLT呢? – kennytm 2010-04-07 16:18:59

+0

您知道如果您發現錯誤,您可以編輯自己的帖子,而無需將修復發佈爲答案。 – Gabe 2010-04-07 16:23:32

回答

12
preg_replace('/<span class="(.*?)">(.*?)<\/span>/i', '<$1>$2</$1>', $input); 
+1

這工作。謝謝。我學到了東西! – geej 2010-04-07 17:51:22

+2

但有一個錯字。應該在雙引號結束之前添加a)。 – geej 2010-04-07 17:52:25