gpt4 book ai didi

php - 使用正则表达式过滤带有php的xpath中的属性

转载 作者:行者123 更新时间:2023-12-03 16:07:06 27 4
gpt4 key购买 nike

我正在尝试使用与其 id 属性匹配的正则表达式过滤 html 表。我究竟做错了什么?我正在尝试实现的代码:

        $this->xpath = new DOMXPath($this->dom); 
$this->xpath->registerNamespace("php", "http://php.net/xpath");
$this->xpath->registerPHPFunctions();
foreach($xpath->query("//table[php:function('preg_match', '/post\d+/', @id)]") as $key => $row)
{

}

我得到的错误:preg_match 期望第二个参数是一个字符串,给定的数组。

最佳答案

根据 DOM(具有命名空间等),属性仍然是一个复杂元素。采用:

//table[php:function('preg_match', '/post\d+/', string(@id))]

现在,我们需要一个 bool 返回,所以:
function booleanPregMatch($match,$string){
return preg_match($match,$string)>0;
}
$xpath->registerPHPFunctions();
foreach($xpath->query("//table[@id and php:function('booleanPregMatch', '/post\d+/', string(@id))]") as $key => $row){
echo $row->ownerDocument->saveXML($row);
}

顺便说一句:对于更复杂的问题,您当然可以偷偷检查一下发生了什么:
//table[php:function('var_dump',@id)]

很遗憾我们没有可用的 XPATH 2.0 函数,但如果你能用更不可靠的 starts-with 来处理这个要求的话,我总是更喜欢导入 PHP 函数。

关于php - 使用正则表达式过滤带有php的xpath中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6823032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com