正则表达式preg_match()问题

时间:2012-12-13 11:43:35

标签: php regex preg-match delimiter

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

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

$ data中的信息是:'目前是什么: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。

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

3 个答案:

答案 0 :(得分:5)

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

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

编辑:

如评论中所述

  

@JoséRobertoAraújoJúniorcurl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);如果这就是你的意思,是的,我已经设定了它。如果我是echo $data,那就是   显示网页,这意味着它仍然包含所有的HTML   标签..我不知道该怎么做,在我的preg _

中使用这些数据

然后$data可能在Currently:(...)之间包含空格,因此应在您的模式中考虑添加\s+而不是正常白色-space,\s将匹配PCRE regex syntax documentation page中描述的任何空格字符。

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

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

答案 1 :(得分:1)

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

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

除非您将其转义,否则此字符不会出现在模式中,例如:

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

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

答案 2 :(得分:1)

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

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

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