我如何使用DomDocument修改我的PHP代码,以删除括号和它们包含的单词?



我试图删除DomDocumentstr_ireplace功能,所有span标签都具有包含language-indicatorclass属性,这些属性通常是括号中的单词,包括:(d),(en)

但是的问题是,它只删除括号中的单词:d,en。AND不删除括号本身:().

libxml_use_internal_errors(true);
$parser = new DOMDocument();
$parser->loadHTMLFile("https://fr.wikipedia.org/wiki/Mark_Zuckerberg");
$get_span_tags = $parser->getElementsByTagName("span");
foreach ($get_span_tags as $get_span_tag) {
if (stripos($get_span_tag->getAttribute('class'), "indicateur-langue") !== false) {
$get_infoxbox_span = $parser->saveHTML($get_span_tag);
$wikipediaInfoboxTable = str_ireplace($get_infoxbox_span, "", $wikipediaInfoboxTable);
}
}

echo $wikipediaInfoboxTable;

所以我怎么能修改我的代码也删除括号和它们包含的单词,因为目前的单词被删除,括号()不是吗?

谢谢你的帮助。

我本以为使用XPath显式地标识感兴趣的节点会比最初的方法更容易。而不是使用str_replace等,你可以完全从DOM中删除span元素?!

libxml_use_internal_errors( true );
$dom=new DOMDocument();
$dom->loadHTMLFile( 'https://fr.wikipedia.org/wiki/Mark_Zuckerberg' );
# create the XPath object
$xp=new DOMXPath( $dom );
# create the query to find spans with class as specified
$expr='//span[ @class="indicateur-langue" ]';
# query the dom and iterate through results
$col=$xp->query( $expr );
if( $col && $col->length > 0 ){
foreach( $col as $node ){
$node->parentNode->removeChild( $node );
}

#create a copy of the modified HTML
$html=$dom->saveHTML();

# show the result?
printf('<textarea cols=100 rows=20>%s</textarea>', print_r( $html ,true ) );
}

相关内容

  • 没有找到相关文章

最新更新