2011-10-05 74 views
-2

可能重複:
Best methods to parse HTML with PHPpreg_replace函數圖像內的風格

對於一個網站,我有一個字符串不知道什麼文本或圖像線條就會出現在其中。 我想創建圖像內部樣式的替代品。不知道""之間會有什麼風格,整個style=""必須刪除 。

什麼是我需要替換的模式。

+0

您的問題是什麼? –

+3

使用DOM解析器。 – webbiedave

+0

我只想知道我需要什麼樣的模式才能完成這項工作:) – directory

回答

0

對此使用正則表達式是一個壞主意,因爲HTML解析器將更加健壯。如果樣式屬性始終將是相似的,只是微小的變化,那麼你可以使用以下方法來改變它:

$yourStyle = 'style="your-style-goes-here"'; 
$newString = preg_replace('%style="(.*?)"%is', $yourStyle, $string); 

如果你只是想刪除的樣式屬性完全,然後設置$yourStyle = '';

再次強調,這不是最好的方式,但它可以工作,假設在樣式的中間不會有引號,並且樣式屬性以引號結尾。

0

像這樣的東西應該有所幫助:

$data = array(
    '<img src="hello/test.png" />', 
    '<img src="hello/test.png"/>', 
    '<img src="hello/test.png">', 
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" border="0" />', 
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" border="0"/>', 
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" border="0">', 
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black" />', 
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black"/>', 
    '<img src="mama" style="blabla; background-color: #98473; border: 1px solid black">', 
    '<img style="blabla; background-color: #98473; border: 1px solid black" src="mama" />', 
    '<img style="blabla; background-color: #98473; border: 1px solid black" src="mama"/>', 
    '<img style="blabla; background-color: #98473; border: 1px solid black" src="mama">', 
); 
foreach($data as $texttosearch){ 
    echo htmlentities($texttosearch).' => '.htmlentities(preg_replace('/(<img .*?)(style=("|\').*?("|\'))(.*?(\/?)>)/i', '$1$5', $texttosearch)).'<br />'; 
} 
0

這應有助於:

/(?:style=")(?:[\w\-\:\;\s\%\#]+)(?:\")/i 

它會剝奪多數風格從任何標籤的屬性。您可以將它放在一個功能中,並將其供給您要檢查/替換的零件