PHP6的新特性:Unicode和TextIterator

澳门新葡亰手机版,我刚刚安装了PHP6
DEV版本,决定测试一下PHP6的新特性-PHP的Unicode支持。我并没有打算讲PHP6的新特性或者是Unicode,下面仅仅是我做的关于Unicode的测试。

首先要做的是让php6支持Unicode,在php.ini文件中修改。

;;;;;;;;;;;;;;;;;;;;; Unicode settings
;;;;;;;;;;;;;;;;;;;;;unicode.semantics = onunicode.runtime_encoding =
utf-8unicode.script_encoding = utf-8unicode.output_encoding =
utf-8unicode.from_error_mode =
U_INVALID_SUBSTITUTEunicode.from_error_subst_char =
3f由于我使用的是法语和英语有所不同,有一些字符需要处理。所以,我第一次试验的目的是检验strlen功能的Unicode

$word = tre;echo Length: .strlen($word);

结果是: Length: 4 。结果非常的正确 但它仅仅是个开始! : )

我的第二个测试对象是与PHP6新的SPL中的TextIterator textiterator$word =
tre;foreach (new TextIterator($word, TextIterator::CHARACTER) as
$character) {? var_inspect($character);}

输出: unicode(1) { 00ea } unicode(1) t { 0074 } unicode(1) r { 0072 }
unicode(1) e { 0065 }分解单词,得到了很多的字母和字母的信息

TextIterator::CHARACTER的操作看上去非常的强大啊,不过TextIterator::WORD更强大

$sentences = Bonjour, nous sommes Franais ! Ae :);foreach (new
TextIterator($sentences, TextIterator::WORD) as $word) {
var_inspect($word);}

得到的结果: unicode(7) Bonjour { 0042 006f 006e 006a 006f 0075 0072 }
unicode(1) , { 002c } unicode(1) { 0020 } unicode(4) nous { 006e 006f
0075 0073 } unicode(1) { 0020 } unicode(6) sommes { 0073 006f 006d 006d
0065 0073 } unicode(1) { 0020 } unicode(8) Franais { 0046 0072 0061 006e
00e7 0061 0069 0073 } unicode(1) { 0020 }