我是PHP初学者,在论坛上看到了这个PHP表达式:
我的PHP版本是5.2.X ()
$regex = <<<'END'
/
( [\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC0-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| [\xE0-\xEF][\x80-\xBF]{2} # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xF0-\xF7][\x80-\xBF]{3} # quadruple-byte sequence 11110xxx 10xxxxxx * 3
)
| ( [\x80-\xBF] ) # invalid byte in range 10000000 - 10111111
| ( [\xC0-\xFF] ) # invalid byte in range 11000000 - 11111111
/x
END;这个代码正确吗?像<<<、'END'、/、/x和END;这样的奇怪的结构(对我来说)意味着什么?
我的PHP版本不支持现在的文档,我应该如何替换这个表达式?没有引号,'END' $regex变成了NULL
我收到:
解析错误:语法错误,X行/home/vhosts/mysite.com/public_html/mypage.php中的意外T_SL
谢谢
发布于 2010-04-08 23:19:58
解析错误:语法错误,X行/home/vhosts/mysite.com/public_html/mypage.php中的意外T_SL
这来自于's from。这是在PHP5.3中添加的现在文档。由于您使用的是PHP5.2,而这个正则表达式使用'\x',您将需要一个引号字符串,或者您需要转义'\'s。
正则表达式作为引号字符串的示例,用于这个答案
$regex = '/
( [\x00-\x7F] # single-byte sequences 0xxxxxxx
| [\xC0-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
| [\xE0-\xEF][\x80-\xBF]{2} # triple-byte sequences 1110xxxx 10xxxxxx * 2
| [\xF0-\xF7][\x80-\xBF]{3} # quadruple-byte sequence 11110xxx 10xxxxxx * 3
)
| ( [\x80-\xBF] ) # invalid byte in range 10000000 - 10111111
| ( [\xC0-\xFF] ) # invalid byte in range 11000000 - 11111111
/x
';"/“和"/x”部分是正则表达式中的控制字符。"/"s标记开始和结束,x标志(PCRE_EXTENDED)的含义在:http://us.php.net/manual/en/reference.pcre.pattern.modifiers.php中定义。
发布于 2010-04-08 22:28:02
<<<和END被称为heredoc语法--一种将大量数据引用到变量的方法。
$mytext = <<<TXT
this is my text and it
can be many lines
etc
etc
TXT;这三个字符(这里是TXT,以示例结尾)可以是您喜欢的任何字符,但据我所知,它们必须是字母数字。
在手册阅读更多内容
发布于 2010-04-08 22:27:44
我是黑尔多语法。
<<< 'END'表示,它是字符串的开始,直到下一次出现"END“为止,所有内容都是字符串的一部分(甚至是换行符)。
/和/x实际上是正则表达式的一部分。
https://stackoverflow.com/questions/2603853
复制相似问题