我正在阅读这个程序更新,看看什么是新的,突然间我看到了这个:
if( preg_match("/[\xE0-\xFF][\x80-\xFF][\x80-\xFF]/", $variablino_namerino) )
{
//do stuff
}
我立刻用Google搜索了preg_match并发现了这个编程技巧的奇妙分支,用我从未听说过的正则表达式创造奇迹。观看了几个视频并阅读了几个文档。然后我开始解决这个问题,并且理解E0和FF之间存在的值可能不存在,所以我改变了这个表达式,所以它应该总能找到一些东西:
if( preg_match("/[\x00-\xFF][\x00-\xFF][\x00-\xFF]/", $variablino_namerino) )
{
//do stuff
}
实际上并没有! So i thought this was the problem,但在将语句更改为:
后,它开始工作 if( preg_match("/[\x01-\xFF][\x01-\xFF][\x01-\xFF]/", $variablino_namerino) )
{
//do stuff
}
其中x01仍然是控制角色,对吗?此外,该网站采用UTF-8。
因此,您不能在范围中包含x00,因为它是NULL值还是不同的东西?
答案 0 :(得分:1)
解决方案是在声明正则表达式时将反斜杠加倍或使用单引号:
if( preg_match('/[\x00-\xFF][\x00-\xFF][\x00-\xFF]/', 'text') ) {
//do stuff
}
请参阅IDEONE demo
使用单引号时,\x
表示法被视为\\x
,并且由正则表达式引擎正确处理。