介绍
在PHP中,IntlChar charDirection()函数用于返回给定字符的方向属性。该函数是PHP Internationalization Functions扩展提供的一种函数,旨在支持 PHP 7.0.0 及更高版本。
IntlChar::charDirection ( mixed $codepoint ) : int
该函数需要传递一个参数,参数类型为mixed,代表要查询的Unicode字符或Unicode字符的代码点。
函数返回一个整型值,代表给定字符的方向属性。如果该字符不存在方向属性,则返回0。
字符方向属性
在 Unicode 标准中,每个字符都有一个方向属性。基本上,Unicode 字符按照以下方向属性分为四类:
左到右文本(L)
右到左文本(R)
强制从左到右的文本(LRE 或 LRO)
强制从右到左的文本(RLE 或 RLO)
左到右文本(L)
左到右文本是指顺序读取字符的文本。单词和句子从左往右开始,并左对齐排列。
右到左文本(R)
右到左文本是指倒序读取字符的文本。单词和句子从右往左开始,并右对齐排列。
强制从左到右的文本(LRE 或 LRO)
在强制从左到右的文本中,包含顺序文本的语句会在两端包含嵌套顺序字符的一个嵌套结构。在文本的结尾,顺序字符会返回到外部文本,使得整个嵌套结构最终有个左到右文本。
强制从右到左的文本(RLE 或 RLO)
在强制从右到左的文本中,包含逆序文本的语句会在两端包含嵌套逆序字符的一个嵌套结构。在文本的结尾,逆序字符会返回到外部文本,使得整个嵌套结构最终有个右到左文本。
实例
让我们看一下如何使用IntlChar charDirection()函数。下面的示例将输出字符“Hello world!” 的数组形式及其方向属性:
$hello = "Hello world!";
foreach (preg_split('//u', $hello, -1, PREG_SPLIT_NO_EMPTY) as $char) {
printf('%s [%x]: %d' . "\n", $char, IntlChar::ord($char), IntlChar::charDirection($char));
}
上面的PHP代码将生成以下输出:
H [48]: 0
e [65]: 0
l [6c]: 0
l [6c]: 0
o [6f]: 0
[20]: 0
w [77]: 0
o [6f]: 0
r [72]: 0
l [6c]: 0
d [64]: 0
! [21]: 0
上面的输出表明,所有字符都具有方向属性0,因此它们都是从左到右的文本。