提问人: 提问时间:6/11/2022 更新时间:6/11/2022 访问量:32
如何使用 DomDocument 修改我的 PHP 代码,以删除括号和它们包含的单词?
How can I modify my PHP code using DomDocument, to remove the parentheses and the words they contain?
问:
我正在尝试删除 with 和 函数,所有具有属性的标签,这些标签通常都是括号中的单词,包括:、。DomDocument
str_ireplace
span
class
language-indicator
(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;
那么我该如何修改我的代码以删除括号和它们包含的单词,因为目前单词已被删除并且括号 ()
不???
谢谢你帮助我。
答:
0赞
Professor Abronsius
6/11/2022
#1
我本来以为使用 an 来显式标识感兴趣的节点会比初始方法更容易。与其使用 etc,不如从 DOM 中完全删除 span 元素?!XPath
str_replace
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 ) );
}
评论
0赞
6/11/2022
它根本不起作用。尽管使用了您刚刚给我的示例代码,但括号仍然存在。我真的需要你的帮助。xpath
0赞
Professor Abronsius
6/12/2022
它确实有效 - 它愉快地删除了所有带有类的 span 元素~ 您查看了文本区域内的打印内容,应该没有"indicateur-langue"
span.indicateur-langue
评论
$get_span_tags
$get_span_tags
DOMXPath