-4

可能重复:
从 HTML 标记中删除样式属性

当前图像看起来像

<img src="images/sample.jpg" alt="xyz"/>

现在我想删除 HTML 文件中所有标签中存在的所有此类 alt 标签,PHP 代码本身应该替换所有 alt 属性外观。输出应该 <img src="images/sample.jpg" />只是 php 怎么办?

提前致谢

4

4 回答 4

1

首先,您需要保留要修改的文档源。目前尚不清楚您是否要编辑服务器上的一些 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();
于 2012-12-12T13:58:35.480 回答
1

用于DOMDocumentHTML 解析/操作。下面的示例读取一个 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
于 2012-12-12T13:53:49.610 回答
1

阅读您的文件。您可以使用 file_get_contents() 来读取文件

$fileContent = file_get_contents('filename.html');
$fileContent = preg_replace('/alt=\"(.*)\"/', '', $fileContent);
file_put_contents('filename.html', $fileContent);

确保您的文件是可写的

于 2012-12-12T13:49:59.270 回答
0

对于有效的 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();  
于 2012-12-12T13:53:19.547 回答