2010-03-09 78 views
1

我將如何替換所有帶有空行的pagenum pncolor類的span標籤(以及內部的whatevers)。 str_replace不會工作,因爲它們的名稱都不相同,所以我假設我會使用preg_replace,但我確定它是如何工作的。使用preg_replace

<span class='pagenum pncolor'><a id='page_001' name='page_001'></a>001</span> 
<p>Some text</p> 

<span class='pagenum pncolor'><a id='page_130' name='page_130'></a>130</span> 
<p>Some text</p> 
<p>Some text</p> 
<p>Some text</p> 

<span class='pagenum pncolor'><a id='page_120' name='page_120'></a>120</span> 
<p>Some text</p> 

<span class='pagenum pncolor'><a id='page_100' name='page_100'></a>100</span> 
<p>Some text</p> 
+0

請注意,如果這是一個單例,正則表達式可能會工作,對於更一般的用法,您可能希望使用HTML解析器而不是正則表達式,然後像XPath那樣快速提取所需的項目。 – Amber 2010-03-09 22:35:24

+0

可能重複的[如何解析和處理HTML的PHP​​?](http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-with-php) – PeeHaa 2012-01-16 19:59:26

回答

2

使用這個正則表達式:#<span class='pagenum pncolor'>.*?</span>#si

0

假設$文字= {} THE_HTML_STRING_YOU_POSTED_IN_YOUR_QUESTION;

你可以試試:

preg_replace("/<span class='pagenum pncolor'>(.*)<\/span>/",'',$text); 
+2

這將取代之間的一切第一個''到最後一個''。在你的'*'之後加一個'?'來解決這個問題。 – 2010-03-09 22:36:28

+0

你是對的!使量化器懶惰將解決問題 請檢查http://www.regular-expressions.info/repeat.html,指出由於回溯,懶惰會導致更多的CPU週期。 – Andreas 2010-03-10 19:35:35