2012-02-08 103 views
1

我想使用的preg_match从一些HTML提取一些数据。我想从以下行的阿贾克斯的号码与的preg_match():分隔符不能是字母,数字或反斜线

new Ajax.Request('/selectdata/new/get_ids?id=687420' 

所以,我用下面的PHP

preg_match('new Ajax.Request\(\'/selectdata/new/get_ids\?id=(.+?)\'', $buffer, $matches) 

我得到的消息“的preg_match():分隔符不能是字母数字或反斜杠“

我已经尝试了很多变体,但没有成功。

+2

http://php.net/manual/en/regexp.reference.delimiters.php简单明了。 – 2012-02-08 18:36:45

回答

6

第一个参数中的第一个字符必须是分隔符。由于它是“n”,preg_match认为你正在尝试使用'n'分隔的正则表达式。

添加管道,获得成功:

preg_match('|new Ajax.Request\\(\'/selectdata/new/get_ids\\?id=(.+?)\'|', $buffer, $matches) 

测试:

$ php --interactive 
php > $a = "new Ajax.Request('/selectdata/new/get_ids?id=687420'"; 
php > preg_match('|new Ajax.Request\\(\'/selectdata/new/get_ids\\?id=(.+?)\'|', $a, $matches); 
php > var_dump($matches); 
array(2) { 
    [0]=> 
    string(52) "new Ajax.Request('/selectdata/new/get_ids?id=687420'" 
    [1]=> 
    string(6) "687420" 
} 
+0

谢谢,已经尝试过。仍然没有成功返回数字。没有错误,但。 – user1197941 2012-02-08 18:42:21

+0

我最初有一些反斜杠,但是当我测试时,这对我有用:''a =“new Ajax.Request('/ selectdata/new/get_ids?id = 687420'”; preg_match('| new Ajax.Request \ \(\'/ selectdata/new/get_ids \\?id =(。+?)\'|',$ a,$ matches); var_dump($ matches);' – 2012-02-08 18:46:42

+0

啊,是的,我现在看到,非常感谢:) – user1197941 2012-02-08 18:55:42

相关问题