我需要指定一些const(终结符)。
文件是UTF8编码的。
class Base { const PROTO = chr(2) . chr(2) . chr(3) . chr(1); function test($str) { if (substr(str,0,4) == self::PROTO) { ... } } }
现在使用延迟初始化:
public function __construct() { $this->_proto = chr(2) . chr(2) . chr(3) . chr(1); }
如果有可能做到这一点,那就太有趣了
答案 0 :(得分:1)
您可以将它们指定为八进制表示法中的字符串,如const PROTO = "\2\2\3\1"
,或者您更喜欢十六进制const PROTO = "\x2\x2\x3\x1"
。
chr(n)
的作用是返回由数字n
指定的ASCII字符,该字符是十进制表示法。如果您先将n
转换为八进制或十六进制,然后分别将\
或\x
作为前缀,则可以在double-quoted string中获得相同的内容。
这里的例子中所有数字都保持不变,因为它们都在8以下,因此在所有三种符号中都有相同的数字。如果您想要一个垂直制表符,则可以将其指定为chr(11)
(十进制),"\xB"
(十六进制)或"\13"
(八进制)。
在http://www.asciitable.com/有一个方便的ASCII表,它为每个字符提供了所有三种符号。