我知道我可以使用的preg_match但我想知道如果PHP有办法来评估正则表达式,如:PHP等于正则表达式
if(substr($example, 0, 1) == /\s/){ echo 'whitespace!'; }
我知道我可以使用的preg_match但我想知道如果PHP有办法来评估正则表达式,如:PHP等于正则表达式
if(substr($example, 0, 1) == /\s/){ echo 'whitespace!'; }
PHP 不有一流的正则表达式。
您将需要使用默认PCRE extension提供的功能。抱歉。这是一个反斜杠逃跑的噩梦,但这是我们所有的。现在的PCRE版本可以很好地理解Unicode,甚至不需要使用它们,甚至不需要使用它们,甚至更好如果PHP本身就是无知了。)
关于反斜杠逃逸的噩梦,你可以用单引号括住包含正则表达式,而不是双打的字符串,采摘保持恐惧降到最低一个适当的分隔符。比较:
"/^http:\\/\\/www.foo.bar\\/index.html\\?/"
与
'!^http://www.foo.bar/index.html\?!'
里面单引号,你只需要反斜杠反斜杠逃逸和单引号,并且选择不同的分隔符避免了需要逃跑的正则表达式中的分隔符。
:)
if(substr($example, 0, 1) == " "){ echo 'whitespace!';}
你不应该使用正则表达式是不需要的时候。
但这不符合换行符,制表符等 – phihag 2011-03-26 21:48:19
嗯,我认为可以使用ord(10)等来完成,但正则表达式是正确的方式。我从字面上提问,抱歉。 @Charles回答了所问。 – 2011-03-26 21:56:14
这只是一个例子,因为我的伪$示例建议。这不仅仅是一个教育问题,“这是我需要做的”问题。我同意,没有正则表达式时不需要。 – 2011-03-26 22:48:48
还有将是microoptimization选项:
if (strstr(" \t\r\n", $example{0})) {
的{0}
是一种过时的方式来获得的第一个字符(同[0]
实际上)。而strstr
只是检查该字符是否包含在空白字符列表中。至少在你的例子中,另一种选择是strspn
。
的反斜杠逃逸的噩梦可以,如果你使用**分隔符,这不是出现在正则表达式**内减少 - 这将意味着更少的逃脱做;;;通常,当在URL或路径上使用正则表达式时,使用'/'作为分隔符并不是一个好主意。^^ ;;;见http://fr2.php.net/manual/en/regexp.reference.delimiters.php – 2011-03-26 21:48:40
'ereg'已被弃用?我一定很老。 – 2011-03-26 21:48:52
你可以使用不同的分隔符,以避免逃逸所有反斜杠,如果你喜欢'的preg_match(“%HTTP:// WWW \ .stackthepack \ .COM /%”,$网址)' – 2011-03-26 21:51:09