php等于正则表达式

Sen*_*lez 0 php

我知道我可以使用preg_match,但我想知道php是否有办法评估正则表达式,如:

if(substr($example, 0, 1) == /\s/){ echo 'whitespace!'; }
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 8

PHP 没有一流的正则表达式.

您需要使用默认PCRE扩展提供的功能.抱歉.这是一场反叛逃避的噩梦,但这都是我们所拥有的.

(还有现在已经弃用的POSIX正则表达式扩展,但是你不应该再使用它们.它们更慢,功能更少,而且最重要的是,它们不是Unicode安全的.现代PCRE版本非常理解Unicode,即使PHP也是如此本身对此一无所知.)


关于反斜杠逃避的噩梦,你可以通过使用单引号括起包含正则表达式而不是双精度的字符串并选择适当的分隔符来将恐怖保持在最低限度.相比:

"/^http:\\/\\/www.foo.bar\\/index.html\\?/"
Run Code Online (Sandbox Code Playgroud)

'!^http://www.foo.bar/index.html\?!'
Run Code Online (Sandbox Code Playgroud)

在单引号内,您只需要反斜杠 - 转义反斜杠和单引号,并选择不同的分隔符,避免需要转义正则表达式内的分隔符.