preg_match():分隔符不能是字母数字或反斜杠

时间:2012-02-08 18:34:36

标签: php regex

我正在尝试使用preg_match从某些html中提取一些数据。我想从Ajax调用的以下行获取数字

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

所以,我使用了以下PHP

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

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

我尝试了很多变化,但没有成功。

1 个答案:

答案 0 :(得分: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"
}