【问题标题】:How to remove all 'alt' attribute from all the <img> tags from HTML file in PHP? [duplicate]如何从 PHP 中的 HTML 文件中的所有 <img> 标签中删除所有 'alt' 属性? [复制]
【发布时间】:2012-11-30 05:47:01
【问题描述】:

可能重复:
Remove style attribute from HTML tags

当前图像看起来像

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

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

提前致谢

【问题讨论】:

  • 你有没有尝试过?你读过 PHP 中的 DOM 吗?
  • +2 - 真的吗?这个问题有什么值得点赞的??
  • 想法:将 HTML 解析为 DOM 并在其上使用 XSL 转换。那会有一个像 这样的模板,然后简单地复制所有其他的东西。
  • 仅供参考,但alt 属性是必需的。

标签: php image alt


【解决方案1】:

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

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

确保你的文件是可写的

【讨论】:

  • -1 代表using regexp。 - 版本更正了正则表达式
  • 谢谢 Touki。这可能不是最好的方法,但它确实有效......
【解决方案2】:

对于有效的 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();  

【讨论】:

    【解决方案3】:

    使用DOMDocument 进行HTML 解析/操作。下面的示例读取一个 HTML 文件,从所有 img 标记中删除 alt 属性,然后打印出 HTML。

    $dom = new DOMDocument();
    $dom->loadHTMLFile('file.html');
    
    foreach($dom->getElementsByTagName('img') as $image)
    {
        $image->removeAttribute('alt');
    }
    
    echo $dom->saveHTML(); // print the modified HTML
    

    【讨论】:

    • 感谢@MrCode 为您提供帮助。它对我有用。
    【解决方案4】:

    首先,您需要保留要修改的文档源。不清楚是要编辑服务器上的一些 html 文件、编辑请求生成的 html 输出还是什么...

    在这个答案中,我将介绍如何访问 HTML。可以是file_get_contents('filename.html');some magic with output buffering

    由于you don't want to parse HTML with regular expressions,您需要使用解析器:

    由于 HTML 需要 alt 属性才能有效,因此如果要“删除”它,必须将其设置为空字符串。

    这应该可行:

    $doc = DOMDocument::loadHTML($myhtml);
    $images = $doc->getElementsByTagName('img'); 
    
    foreach($images as $img) {
        $image->setAttribute('alt', '');
    }
    
    $myhtml = $doc->saveHTML();
    

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      相关资源
      最近更新 更多