【问题标题】:Regex preg_match() issues正则表达式 preg_match() 问题
【发布时间】:2023-03-24 03:25:02
【问题描述】:

我无法让以下正则表达式正常工作:

preg_match('Currently: ([0-9\.km,]+)', $data, $matches)   

$data 内部的信息是:'What it is Current: 52,523'(以及大约 30 行 html)。

我不断收到以下错误:Warning: preg_match(): Delimiter must not be alphanumeric or backslash in C:\xampp\htdocs\test\test.php on line 49

注意:第 49 行包含我在上面发布的 preg_match。

编辑:抱歉,我忘了添加匹配参数。

【问题讨论】:

    标签: php regex preg-match delimiter


    【解决方案1】:

    preg_match function 需要在您的模式中使用分隔符。

    preg_match('/Currently: ([0-9\.km,]+)/', $data, $matches)   
    

    编辑:

    如 cmets 中所述

    @JoséRobertoAraújoJúnior curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 如果这就是你的意思,是的,我已经设置好了。如果我echo $data,它 显示网页,这意味着它仍然包含所有 html 标签.. 我不知道从这里做什么,在我的 preg_ 中使用该数据_

    那么$data 可能在Currently:(...) 之间包含空格,因此应该在您的模式中考虑这一点,通过添加\s+ 而不是普通的空格,\s 将匹配PCRE regex syntax documentation page 中描述的任何空白字符。

    preg_match('/Currently:\s+([0-9\.km,]+)/', $data, $matches) 
    

    现场测试: http://codepad.viper-7.com/xJNisE

    【讨论】:

      【解决方案2】:

      您需要在模式的开头和结尾添加相同的字符:

      preg_match('/Currently: ([0-9\.km,]+)/', $data)   
      

      除非您对其进行转义,否则此字符不能出现在模式中,例如:

      preg_match('/<example><\/example>/', $xml)  
      

      您可以使用其他字符作为分隔符,/ 旁边最常用的一个是#

      【讨论】:

        【解决方案3】:

        你必须像这样编辑使用分隔符

        $data = 'What it is Currently: 52,523';
        preg_match('&Currently: ([0-9\.km,]+)&', $data, $match);
        print_r($match);
        

        工作示例http://codepad.viper-7.com/QGOoXT

        【讨论】:

        • 我试过用这个,返回的都是'1'。我错过了什么吗?我从字面上复制+粘贴了你上面的例子。
        • @Woddles 使用编辑后的代码。它会给出匹配的值。
        • @Woddles preg_match 如果 pattern 匹配给定的 subject 则返回 1,如果不匹配则返回 0FALSE如果发生错误。检查文档的链接;)
        • @JoséRobertoAraújoJúnior 我知道我应该在之前的帖子中提到这一点,所以我现在要指出来。我正在使用返回$data = curl_exec($curl);,这可能是为什么我的preg_match 返回0?我假设在 $data 上使用 preg_match 时,由于通过curl 返回了额外的 html 标签,它会失败。有什么解决办法吗?
        • @JoséRobertoAraújoJúnior curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 如果这就是你的意思,是的,我已经设置好了。如果我 echo $data,它会显示网页,这意味着它仍然包含所有 html 标签。我不知道从这里做什么,在我的 preg 中使用该数据_
        猜你喜欢
        • 2012-01-05
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        相关资源
        最近更新 更多