代码之家  ›  专栏  ›  技术社区  ›  Laurent

html/php-使用html解析或正则表达式清理图像?

  •  0
  • Laurent  · 技术社区  · 6 年前

    我正在尝试清理我的CMS中的一些遗留内容,以统一标签的使用方式,我想从图像开始,但我遇到了一些问题。

    图像标签中的内容,如alt,srcset,size,。。。不总是使用,并且当它被使用时,它并不总是以相同的顺序使用。我尝试了两种不同的角度来清理代码:

    1. HTML解析

    $dom = new DOMDocument;
    $dom->loadHTML($html);
    $images = $dom->getElementsByTagName('img');
    foreach ($images as $image) 
      {
        $image->setAttribute('class', 'blabla');
      }
    $html = $dom->saveHTML();
    

    当我这样做时,图像类被正确地调整,但是$html中的许多div已经消失,而我没有修改它们。我原来有这样的东西:

    <section id="mysection">
    <div class="mydiv">test</div>
    <section>
    

    最后我说:

    <section id="mysection">
    test
    <section>
    

    由于第一种方法实际上使我的问题更加严重,我尝试使用REGEX。

    1. 正则表达式

    /<img(.*)>/ 然后我将分解结果以识别img中的所有标记。我的问题是正则表达式忽略了结尾 > 最后得到了大量不需要的html代码。它应该在第一次出现 >

    我想html解析应该是这种操作的首选方法,但是解析会破坏我的代码。

    你知道我应该用什么方法来解决这个问题吗?

    0 回复  |  直到 6 年前