首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中匹配行首的反斜杠

问如何在PHP中匹配行首的反斜杠
EN

Stack Overflow用户
提问于 2013-06-12 03:21:07
回答 4查看 821关注 0票数 0

在看到我们的apache日志中出现了一些错误后,我一直在试图找出“原因”。这些错误与我试图查找以反斜杠字符开头的字符串的preg_match命令有关:

代码语言:javascript
复制
preg_match('/^\\/',$str)

它报告"preg_match():找不到结束分隔符'/‘“

出于好奇,我尝试了双引号而不是单引号,以及1到6个反斜杠的组合,但总是报告相同的错误。(我暂时将测试切换到if(substr($str,0,1) == "\") {} )

EN

回答 4

Stack Overflow用户

发布于 2013-06-12 03:24:59

这是因为PHP会将字符串文字中的\\转换为单个\。

因此,您的正则表达式是/^\/,其中\使尾部斜杠从字面上转换为斜杠,而不是结束分隔符。这使得正则表达式没有结束分隔符,因此PCRE会抱怨。

您希望得到的结果是/^\\/,要将其放入字符串字面量中,您需要将反斜杠加倍,因此:

代码语言:javascript
复制
preg_match('/^\\\\/',$str)

也就是说,if($str[0] === '\\')更容易阅读,执行起来也更快。

票数 6
EN

Stack Overflow用户

发布于 2013-06-12 03:25:22

由于\\将作为单个\进行转义,因此您需要执行以下操作:

代码语言:javascript
复制
preg_match('/^\\\\/',$str)
票数 1
EN

Stack Overflow用户

发布于 2013-06-12 03:26:10

好吧,奇怪的是,我只是从头开始运行我的测试,这次像我预期的那样使用了4个反斜杠。我最初的想法是,单引号仍然使用第一个\来限定第二个。所以我试了四次,但一定是在语法上搞错了什么。

代码语言:javascript
复制
if(preg_match('/^\\\\/', $str)) {}

上面的方法是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17052055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档