版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan
PHP6的新特性:Unicode和TextIterator
原文地址:http://blog.makemepulse.com/2008/03/13/php6-unicode-and-textiterator-
我刚刚安装了PHP6 DEV版本,决定测试一下PHP6的新特性-PHP的Unicode支持。我并没有打算讲PHP6的新特性或者是Unicode,下面仅仅是我做的关于Unicode的测试。
首先要做的是让php6支持Unicode,在php.ini文件中修改。
;;;;;;;;;;;;;;;;;;;;
; Unicode settings ;
;;;;;;;;;;;;;;;;;;;;unicode.semantics = on
unicode.runtime_encoding = utf-8
unicode.script_encoding = utf-8
unicode.output_encoding = utf-8
unicode.from_error_mode = U_INVALID_SUBSTITUTE
unicode.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 Français ! Aïe :)";
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) “Français” { 0046 0072 0061 006e 00e7 0061 0069 0073 } unicode(1) ” ” { 0020 } unicode(1) “!” { 0021 } unicode(1) ” ” { 0020 }
分解得到的是单词,为什么在一个单词后面的{}里面是很多的编码呢?我们来做个实验:
echo " \ u0046 \ u0072 \ u0061 \ u006e \ u00e7 \ u0061 \ u0069 \ u0073 " ;
我们得到这样的结果:“Français”。
PHP6可以对字母或者单词做处理!
$sentences = "Bonjour, nous sommes Français";
$word_break = new TextIterator($sentences, TextIterator::WORD);
取最后一个单词:
$word_break->preceding($word_break->last());
echo $word_break->current();
取第一个单词:
$word_break->first();
echo $word_break->current();
取第三个单词:
$word_break->first();
$word_break->next(3);
echo $word_break->current();
这仅仅是PHP6关于Unicode中的一部分,接下来我要测试在去参加巴黎的PHP会议时学到的
“str_transliterate”,这个str_transliterate可以实现对单词的不同语言的音译。
$name = "Antoine Ughetto";
$jap = str_transliterate($name, 'Latin', 'Katakana');
echo str_transliterate($jap, 'Any', 'Latin');
噢,耶,我的名字是日语(アントイネウグヘット)听起来像是"antoine uguhetto " 。
所有这一切都非常有趣,只是没有手册这些测试起来很困难。
感谢Andrei Zmievski的博客文章帮助我做了这些测试。。。
PHP6, Unicode and TextIterator features - Antoine Ughetto
I’ve just install the last version of PHP6 dev and I’ve decided to test the famous new feature, the PHP Unicode Support. I will not explain new things about PHP6 or Unicode or TextIterator, it’s just my discoveries test on this features.
So the first thing to do is to enable PHP6 Unicode in the php.ini file.
;;;;;;;;;;;;;;;;;;;;
; Unicode settings ;
;;;;;;;;;;;;;;;;;;;;unicode.semantics = on
unicode.runtime_encoding = utf-8
unicode.script_encoding = utf-8
unicode.output_encoding = utf-8
unicode.from_error_mode = U_INVALID_SUBSTITUTE
unicode.from_error_subst_char = 3f
(more…)
分享到:
相关推荐
### JAVA字符编码详解:Unicode, ISO-8859-1, GBK, UTF-8 及其相互转换 #### 一、引言 在Java编程中,字符编码的管理和转换是一项基本而又重要的任务。不同的编码标准适用于不同的场景,而理解和掌握这些编码之间...
### 关于JAVA字符编码:Unicode, ISO-8859-1, GBK, UTF-8 编码及相互转换 在Java开发过程中,字符编码是处理文本数据的基础,不同的编码方式会影响数据的存储、传输以及显示。本文将详细介绍几种常见的字符编码...
字符编码是计算机处理文本的基础,理解各种编码之间的转换关系对于编程和数据处理至关重要。本文将深入探讨Unicode、UTF-8、ASCII以及GB2312等编码系统,并阐述它们之间的转换方式。 首先,我们从最基础的ASCII编码...
标题提及的“arial-unicode-ms”字体家族,包括了"arial-unicode-ms-regular"和"arial-unicode-ms-bold"两种样式,它们是Esri ArcGIS JavaScript API中常用的字体。Arial Unicode MS是一款全面支持Unicode标准的无衬...
UNICODE和UTF-8是两种广泛使用的字符编码标准,它们各自有着独特的特性和应用场景。本文将深入探讨UNICODE与UTF-8之间的关系、区别以及如何进行相互转换。 **一、UNICODE简介** UNICODE,全称是“统一码”或“万国...
标题中的“arial-unicode-ms-regular.zip”是一个压缩文件,其中包含了Arial Unicode MS Regular字体的离线版本。Arial Unicode MS是一种广泛使用的TrueType字体,由Monotype公司设计,旨在支持大量的Unicode字符集...
### 字符编码笔记:ASCII,Unicode和UTF-8 #### 1. ASCII码 ASCII码是上个世纪60年代由美国制定的一套字符编码标准,用于规定英语字符与计算机内部二进制位之间的关系。在计算机内部,信息通常以二进制形式存在,...
ANSI --> Unicode ANSI --> Unicode big endian ANSI --> UTF-8 Unicode --> ANSI Unicode --> UTF-8 UTF-8 --> ANSI UTF-8 --> Unicode UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码...
字符编码笔记:ASCII、Unicode 和 UTF-8 本文主要介绍了字符编码的基本概念和历史发展过程,包括 ASCII 码、Unicode 和 UTF-8 的编码原理和特点。文章首先介绍了 ASCII 码的历史和编码原理,然后讨论了非 ASCII ...
ASCII Unicode 和 UTF-8 的区别 ASCII 码是美国在 20 世纪 60 年代制定的字符编码标准,它规定了 128 个字符的编码,每个字符对应一个二进制代码,共占用一个字节的后 7 位,最前面的 1 位统一规定为 0。ASCII 码...
"esri-fonts-pbf-arial-unicode-ms-bold.zip"是一个压缩包文件,其中包含的是Esri字体库中的Arial Unicode MS Bold字体,以PBF(Protobuf-Encoded Fonts)格式存储。 Arial Unicode MS Bold是一款广泛使用的无衬线...
标题中的“unicode-org:unicode实验镜像-开源”指的是Unicode组织提供的一种实验性质的镜像,这个镜像是开源的,意味着任何用户都可以查看、使用甚至修改其内容。Unicode是国际字符编码标准,它包含了世界上大部分...
本压缩包“esri-fonts-pbf-arial-unicode-ms-regular”与ArcGIS API for JavaScript相关,它包含的是字体文件,特别是针对PBF(Protobuf Binary Format)格式的Arial Unicode MS Regular字体。 Arial Unicode MS是...
lvgl unicode 转 utf-8小工具
Unicode和UTF-8是两种常用的字符集和编码方式,本文将详细介绍它们之间的转换。 Unicode Unicode是一个字符集,提供了一个通用的字符编码方案,能够表示世界上所有语言中的所有字符。Unicode使用双字节表示每个...
unicode匹配属性的电子书 unicode-match-property-ecmascript将给定的Unicode属性或与其规范的属性名称,而无需用于的算法应用。 认为它是松散匹配的严格替代方案。安装要以编程方式使用unicode-match-property-...
字符编码笔记:ASCII, Unicode 和 UTF-8 本篇笔记主要介绍了字符编码的基础知识,包括 ASCII 码、Unicode 和 UTF-8 等概念。文章首先介绍了 ASCII 码的历史和原理,接着讨论了 Unicode 的提出和发展,最后解释了 ...
【标题】"uiautomator-unicode-input-helper-master.zip" 提供的是一个自动化测试工具,主要针对Android系统,用于在应用程序中实现中文输入法的自动化操作。这个工具基于UIAutomator框架,它是一个由Google提供的...
TXM是一个免费且开源的基于Unicode和XML的跨平台文本/语料库分析环境和图形客户端,支持Windows,Linux和Mac OSX。它还可以在线用作兼容J2EE标准的Web门户(基于GWT)内置访问控制。TXM的最新版本下载:...