我知道我可以使用preg_match,但我想知道php是否有办法评估正则表达式,如:
if(substr($example, 0, 1) == /\s/){ echo 'whitespace!'; }
答案 0 :(得分:8)
PHP 不拥有一流的正则表达式。
您需要使用默认PCRE extension提供的功能。抱歉。这是一场反叛逃避的噩梦,但这都是我们所拥有的。
(还有现在已经弃用的POSIX regex extension,但你不应再使用它们。它们更慢,功能更少,而且最重要的是,它们不是Unicode安全的。现代PCRE版本非常了解Unicode好吧,即使PHP本身对它一无所知。)
关于反斜杠逃避的噩梦,你可以通过使用单引号括起包含正则表达式而不是双精度的字符串并选择适当的分隔符来将恐怖保持在最低限度。比较:
"/^http:\\/\\/www.foo.bar\\/index.html\\?/"
与
'!^http://www.foo.bar/index.html\?!'
在单引号内,你只需要反斜杠 - 转义反斜杠和单引号,并选择一个不同的分隔符,避免需要转义正则表达式内的分隔符。
答案 1 :(得分:0)
:)
if(substr($example, 0, 1) == " "){ echo 'whitespace!';}
如果不需要,你不应该使用正则表达式。
答案 2 :(得分:0)
还有微优化选项:
if (strstr(" \t\r\n", $example{0})) {
{0}
是获取第一个字符的过时方式(实际上与[0]
相同)。并且strstr
只检查字符是否包含在空白字符列表中。另一个选项是strspn
,至少在您的示例中是这样。