Convert clickable anchor tags to plain text in html document

前端 未结 2 618
名媛妹妹
名媛妹妹 2020-11-28 16:10
2条回答
  •  星月不相逢
    2020-11-28 17:01

    You should be using DOM to parse HTML, not regular expressions...

    Edit: Updated code to do simple regex parsing on the href attribute value.

    Edit #2: Made the loop regressive so it can handle multiple replacements.

    $content = '
    

    This is a text link

    bah I wont change '; $dom = new DOMDocument(); $dom->loadHTML($content); $anchors = $dom->getElementsByTagName('a'); $len = $anchors->length; if ( $len > 0 ) { $i = $len-1; while ( $i > -1 ) { $anchor = $anchors->item( $i ); if ( $anchor->hasAttribute('href') ) { $href = $anchor->getAttribute('href'); $regex = '/^http/'; if ( !preg_match ( $regex, $href ) ) { $i--; continue; } $text = $anchor->nodeValue; $textNode = $dom->createTextNode( $text ); $strong = $dom->createElement('strong'); $strong->appendChild( $textNode ); $anchor->parentNode->replaceChild( $strong, $anchor ); } $i--; } } echo $dom->saveHTML(); ?>

提交回复
热议问题