2012-10-18 60 views
0

我有一個php文件:str_replace函數刪除段落PHP

$content = str_replace('search old string','by new string',$content); 
$content = str_replace('search old string','by new string',$content); 

它適用於搜索和替換或刪除字符串。 但如果舊字符串是一個段落,例如:

<table class="adverting_I_want_to_remove"> 
    <tr> 
    <td>Dynamic Advertise content 1</td> 
    <td>Dynamic Advertise content 2</td> 
    </tr> 
</table> 

如何刪除表中的內容?

+0

那麼,這裏有什麼問題? HTML從哪裏來? –

+8

Urmm,我沒有看到任何段落的在你的榜樣 – kalpaitch

+0

​​TD 1個 ​​TD 2
<--- 它與更多的斷裂線的一段。因爲我從其他網站獲取內容。如果匹配上面的段落,它將被刪除 –

回答

-2

您可以使用preg_replace()。如果/當您輸錯某些內容時發生故障的可能性很大,這就是爲什麼我不會使用它,但如果您確切地知道要匹配的內容並且可以精確輸入,則是更好的選擇。

preg_replace('/<table>.*<\/table>/s', '', $content); 

如果您不知道如何使用正則表達式,請查看它們並學習它們。通過調整正則表達式,你可以或多或少地具體說明要替換的內容。

+0

點應該在星號之前出現,並且如果內存服務,點不匹配換行符,如果他的html格式化爲上面的格式,這將是一個概率。 –

+0

糟糕,我的壞。讓我來辯護我的答案:當然我同意,當你不需要一個正則表達式(他不在這裏)時,使用'str_replace()'總是更好的選擇,但是這看起來像是一種單向函數,而不是輸入搜索字符串_just right_,我只是使用一個快速的'preg_replace()',這也可以工作。無論如何,其他答案更好,你應該聽取他們的意見。 – sgroves

+0

嗨,sgroves,它的工作,但丟失後的所有內容 –

3
$content = str_replace('<table> 
    <tr> 
    <td>TD 1</td> 
    <td>TD 2</td> 
    </tr> 
</table>','by new string',$content); 

請注意,如果您要替換這樣的HTML片段,則必須確保不在字符串中包含額外的空白。 str_replace進行精確匹配,否則將失敗。

的替代品

+0

GolezTrol,這是行不通的。我嘗試添加問題之前。如果帶有斷線的「舊字符串」,它將不起作用 –

+0

你是什麼意思'不工作'? PHP確實接受字符串中的換行符,但正如我所說的,str_replace完全匹配。這甚至意味着,如果你在Windows中保存你的PHP文件,你可能會有'\ n \ r'行結尾,而你收到的內容可能只有'\ n'行結尾,反之亦然。這就是爲什麼在這種情況下DOM解析器是更好的選擇。 – GolezTrol