可能重复:
从 HTML 标记中删除样式属性
当前图像看起来像
<img src="images/sample.jpg" alt="xyz"/>
现在我想删除 HTML 文件中所有标签中存在的所有此类 alt 标签,PHP 代码本身应该替换所有 alt 属性外观。输出应该
<img src="images/sample.jpg" />
只是 php 怎么办?
提前致谢
可能重复:
从 HTML 标记中删除样式属性
当前图像看起来像
<img src="images/sample.jpg" alt="xyz"/>
现在我想删除 HTML 文件中所有标签中存在的所有此类 alt 标签,PHP 代码本身应该替换所有 alt 属性外观。输出应该
<img src="images/sample.jpg" />
只是 php 怎么办?
提前致谢
首先,您需要保留要修改的文档源。目前尚不清楚您是否要编辑服务器上的一些 html 文件、编辑请求生成的 html 输出或什么...
在这个答案中,我将介绍如何访问 HTML。它可能是一个file_get_contents('filename.html');
或一些输出缓冲的魔法。
由于您不想使用正则表达式解析 HTML,因此您需要使用解析器:
由于该alt
属性是 HTML 有效所必需的,因此如果要“删除”它,则必须将其设置为空字符串。
这应该有效:
$doc = DOMDocument::loadHTML($myhtml);
$images = $doc->getElementsByTagName('img');
foreach($images as $img) {
$image->setAttribute('alt', '');
}
$myhtml = $doc->saveHTML();
用于DOMDocument
HTML 解析/操作。下面的示例读取一个 HTML 文件,alt
从所有标签中删除属性img
,然后打印出 HTML。
$dom = new DOMDocument();
$dom->loadHTMLFile('file.html');
foreach($dom->getElementsByTagName('img') as $image)
{
$image->removeAttribute('alt');
}
echo $dom->saveHTML(); // print the modified HTML
阅读您的文件。您可以使用 file_get_contents() 来读取文件
$fileContent = file_get_contents('filename.html');
$fileContent = preg_replace('/alt=\"(.*)\"/', '', $fileContent);
file_put_contents('filename.html', $fileContent);
确保您的文件是可写的
对于有效的 xHTML,它应该具有 alt 属性。
像这样的东西会起作用:
$xml = new SimpleXMLElement($doc); // $doc is the html document.
foreach ($xml->xpath('//img') as $img_tag) {
if (isset($img_tag->attributes()->alt)) {
unset($img_tag->attributes()->alt);
}
}
$new_doc = $xml->asXML();