加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

“preg_match():编译失败:不匹配的括号”在PHP中为有效模式

发布时间:2020-12-13 13:13:24 所属栏目:PHP教程 来源:网络整理
导读:想知道有没有人可以在 PHP的preg_match函数中使用以下正则表达式失败的原因呢? ?php$str = 'tmpphpDC1C.tmp';preg_match('|tmp([A-Za-z0-9]+)|',$str,$matches);print_r($matches);? 这导致错误消息“preg_match():编译失败:不匹配的括号”,尽管该
想知道有没有人可以在 PHP的preg_match函数中使用以下正则表达式失败的原因呢?
<?php
$str = 'tmpphpDC1C.tmp';

preg_match('|tmp([A-Za-z0-9]+)|',$str,$matches);

print_r($matches);
?>

这导致错误消息“preg_match():编译失败:不匹配的括号”,尽管该模式似乎是有效的.我已经使用在线PHP Regular Expression tester和Linux工具Kiki进行了测试.看起来像PHP正在转出开头的圆括号而不是反斜杠.

我通过使用str_replace交换反斜杠来解决问题.这适用于我的情况,但是很高兴知道为什么这个正则表达式失败.

要对文字反斜杠进行编码,您需要将其转义为两次:一次为字符串,一次为正则表达式引擎:
preg_match('|\tmp\([A-Za-z0-9]+)|',$matches);

在PHP中(使用单引号字符串时),这仅与实际的反斜杠相关;其他正则表达式转义可以使用单个反斜杠:

preg_match('/bhellob/',$subject)

这在the manual中有所介绍(请参见页面顶部的“注意:”框).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读