0

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

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。

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

4

3 回答 3

5

preg_match 函数需要在模式中使用分隔符。

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

编辑:

如评论中所述

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

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

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

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

于 2012-12-13T11:47:20.047 回答
1

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

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

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

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

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

于 2012-12-13T11:46:46.873 回答
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

于 2012-12-13T11:47:56.510 回答