当前位置: 首页 > 面试题库 >

使用正则表达式通过php过滤xpath中的属性

慕容越泽
2023-03-14
问题内容

我正在尝试使用匹配其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))]

现在,我们需要一个布尔值返回,所以:

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函数。



 类似资料:
  • 问题内容: 我在为ElasticSearch Regexp Filter正确表达正则表达式时遇到问题。我正在尝试匹配url字段中“ info-for / media”中的任何内容,例如http://mydomain.co.uk/info-for/media/press- release-1 。为了尝试正确使用我现在使用的正则表达式,但这最终将与用户的查询字符串一起使用。 POST到localhos

  • 本文向大家介绍php过滤HTML标签、属性等正则表达式汇总,包括了php过滤HTML标签、属性等正则表达式汇总的使用技巧和注意事项,需要的朋友参考一下 清除空格,换行 过滤HTML属性 1,过滤所有html标签的正则表达式: 3,过滤部分html标签的正则表达式的排除式(比如排除<p>,即不过滤<p>): 4,过滤部分html标签的正则表达式的枚举式(比如需要过滤<a><p><b>等): 5,过滤

  • 问题内容: 我正在尝试过滤包含一堆URL的数组。我需要返回仅包含“联系人”一词的网址。 例如,有一个链接 这应该从过滤器中返回。 我尝试了这个: 当我知道有一个包含“联系人”一词的域时,它目前仅通过所有域发送回false。 问题答案: 首先,它等于哪里是退格字符(ASCII 08)…显然不是您想要的 所以,你会做的-这相当于 但是,之后是多余的 所以…到 在这里使用被滥用。以下是说明 下一个问题是

  • 本文向大家介绍MYSQL使用正则表达式过滤数据,包括了MYSQL使用正则表达式过滤数据的使用技巧和注意事项,需要的朋友参考一下 一、正则与LIKE的区别  Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts where post_name REGEXP'hello',可以检索出列post_name中所有包含hello的

  • 问题内容: 我想在Java中构建一个正则表达式,该正则表达式将在FilenameFilter中传递以过滤目录中的文件。 问题是我无法理解正则表达式“思维模型”的问题:) 这是我用来选择要排除的文件的正则表达式 (((ABC | XYZ))+ \ w * Test.xml 我想做的是选择所有以Test.xml结尾但不以ABC或XYZ开头的文件。 您能否添加任何可以帮助我应对正则表达式的资源。 谢谢

  • 问题内容: 我正在创建一个CSS编辑器,并试图创建一个可以从CSS文档获取数据的正则表达式。如果我拥有一个属性,则此正则表达式有效,但我无法使其对所有属性都有效。我在PHP中使用preg / perl语法。 正则表达式 测试用例 预期结果 实际结果 在此先感谢您的帮助-整个下午使我感到困惑! 问题答案: 对于单个正则表达式来说,这似乎太令人费解了。好吧,我敢肯定,通过正确的扩展,高级用户可以创建正