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

如何在字符串中找到所有HTML超链接标记并将其替换为其Href值?

  •  2
  • hsatterwhite  · 技术社区  · 14 年前

    我想获取一个文本字符串,找到所有的超链接标记,获取它们的Href值,并用Href属性的值替换整个超链接标记。

    1 回复  |  直到 14 年前
        1
  •  5
  •   VolkerK    14 年前

    很多可能性。例如,使用 DOM extension , DOMDocument::loadhtml() XPath (尽管在这种情况下getElementsBytagName()就足够了)。

    <?php
    $string = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>...</title></head><body>
      <p>
        mary had a <a href="little">greedy</a> lamb
        whose fleece was <a href="white">cold</a> as snow
      </p>
    </body></html>';
    
    $doc = new DOMDocument;
    $doc->loadhtml($string);
    
    $xpath = new DOMXPath($doc);
    foreach( $xpath->query('//a') as $a ) {
      $tn = $doc->createTextNode($a->getAttribute('href'));
      $a->parentNode->replaceChild($tn, $a);
    }
    
    echo $doc->savehtml();
    

    印刷品

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head><title>...</title></head>
    <body><p>
        mary had a little lamb
        whose fleece was white as snow
      </p></body>
    </html>