0
我通常使用此代碼來從HTML標籤中刪除樣式屬性。PHP如何僅從img標籤中的HTML標籤中刪除樣式屬性?
$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);
不過,現在我想刪除從HTML標籤的樣式屬性只有在IMG
標籤。
我該怎麼做?
我通常使用此代碼來從HTML標籤中刪除樣式屬性。PHP如何僅從img標籤中的HTML標籤中刪除樣式屬性?
$output = preg_replace('/(<[^>]+) style=".*?"/i', '$1', $input);
不過,現在我想刪除從HTML標籤的樣式屬性只有在IMG
標籤。
我該怎麼做?
如果您必須在PHP中操作HTML,那麼使用DOM解析器會更安全。作爲一個例子,這裏是一個基於DOM文檔/ DOMXPath獲得具有style
屬性的所有img
標籤,只有刪除這些屬性的一些代碼:
$html = <<<DATA
<body>
<span style="new">Don't modify it</span>
<span style="old">Don't modify it</span>
<img style="Remove-me" src="img.jpg">
<img src="img.jpg" title="Don't modify it">
</body>
DATA;
// Initializing the DOM tree with an HTML string above
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($dom);
$imgs = $xpath->query('//img[@style]'); // Fetch all img tags having style attribute
foreach($imgs as $img) {
$img->removeAttribute('style'); // Remove the style attribute
}
echo $dom->saveHTML(); // Show the modified HTML
見PHP demo。
你應該反過來做。將樣式捕獲爲第一組並將其替換爲無。
$output = preg_replace('/<\s*img[^<>]+?(style\s*=\s*[\'\"][^\'\"]+[\'\"])/i', '', $input);
你的情況,不會把'<'改成' Felk
你能告訴我例如嗎? –