【问题标题】:preg_match(): Delimiter must not be alphanumeric or backslashpreg_match():分隔符不能是字母数字或反斜杠
【发布时间】:2012-02-08 18:34:35
【问题描述】:

我正在尝试使用 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(): Delimiter must not be alphanumeric or backslash”

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

【问题讨论】:

标签: php regex


【解决方案1】:

第一个参数中的第一个字符必须是分隔符。由于它是“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"
}

【讨论】:

  • 谢谢,已经试过了。返回数字仍然没有成功。不过没有错误。
  • 我最初有一些反斜杠,但在我测试时这对我有用:$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);
  • 啊,是的,我现在明白了。非常感谢:)
  • @user1197941:如果此答案解决了您的问题,请随时将其标记为“已接受”,以便您的问题不再出现在未回答的问题列表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2011-02-01
  • 2016-07-26
相关资源
最近更新 更多