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

How can I modify my PHP code using DomDocument, to remove the parentheses and the words they contain?

提问人: 提问时间:6/11/2022 更新时间:6/11/2022 访问量:32

问:

我正在尝试删除 with 和 函数,所有具有属性的标签,这些标签通常都是括号中的单词,包括:、。DomDocumentstr_ireplacespanclasslanguage-indicator(d)(en)

它有效问题是它只删除了括号中的单词:den。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;

那么我该如何修改我的代码以删除括号和它们包含的单词,因为目前单词已被删除并且括号 () 不???

谢谢你帮助我。

php dom文档

评论

0赞 Professor Abronsius 6/11/2022
以上似乎不完整 - 在哪里以及如何定义?$get_span_tags
0赞 6/11/2022
我只是通过添加变量来修改代码。谢谢。我希望你能帮助我。$get_span_tags
0赞 Professor Abronsius 6/11/2022
如果使用,您将能够直接识别相关节点DOMXPath
0赞 6/11/2022
如何使用 DOMXPath 是我的 cas,请???我从不使用 DOMXPath。所以,请给我一个在我的情况下的用法示例。

答:

0赞 Professor Abronsius 6/11/2022 #1

我本来以为使用 an 来显式标识感兴趣的节点会比初始方法更容易。与其使用 etc,不如从 DOM 中完全删除 span 元素?!XPathstr_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