转换复杂字符
访问整个Unicode字符集的能力为渲染复杂的字符提供了许多新的可能性,特别是拉丁字母以外的字符。
如何做…
1.有些语言的读法是从右到左,而不是从左到右。例如希伯来语和阿拉伯语。在这个例子中,我们向您展示如何使用U+202E Unicode字符来呈现从右到左覆盖的反向文本。下面这行代码打印了txet desreveR。
echo "\u{202E}Reversed text";echo "\u{202D}"; // returns output to left-to-right
{% hint style=”info” %}
完成后别忘了调用从左到右的覆盖字符U+202D!
{% endhint %}
- 另一个考虑因素是使用合成字符。其中一个例子是
ñ(字母n,上面有一个tilde~)。这在诸如mañana(西班牙语中的早晨或明天,取决于上下文)这样的单词中使用。还有一个可用的组成字符,由Unicode代码U+00F1表示。下面是其使用的一个例子,与mañana相呼应。
echo "ma\u{00F1}ana"; // shows mañana
然而,这可能会潜在地影响搜索的可能性。想象一下,你的客户没有一个带有这个组成字符的键盘。如果他们开始输入
man试图搜索mañana,他们将不成功。使用完整的Unicode集提供了其他的可能性。你可以不使用组成的字符,而是使用原始字母
n与Unicode组合码的组合,将浮动的tilde置于字母之上。在这个echo命令中,输出的结果和之前一样。只是组成单词的方式不同。
echo "man\u{0303}ana"; // also shows mañana
- 对于重音也可以有类似的应用。考虑一下法语单词
élève(学生)。您可以使用合成字符来呈现它,或者使用组合代码将重音浮在字母上方。考虑以下两个例子。这两个例子产生了相同的输出,但呈现方式不同。
echo "\u{00E9}l\u{00E8}ve";echo "e\u{0301}le\u{0300}ve";
如何运行…
创建一个名为chap_08_control_and_combining_unicode.php的文件。确保包含元标签,向浏览器发出UTF-8字符编码的信号。
<!DOCTYPE html><html><head><title>PHP 7 Cookbook</title><meta http-equiv="content-type" content="text/html;charset=utf-8" /></head>
接下来,设置基本的PHP和HTML来显示前面讨论的例子。
<body><pre><?phpecho "\u{202E}Reversed text"; // reversed//echo "\u{202D}"; // stops reverseecho "mañana"; // using pre-composed charactersecho "ma\u{00F1}ana"; // pre-composed characterecho "man\u{0303}ana"; // "n" with combining ~ character (U+0303)echo "élève";echo "\u{00E9}l\u{00E8}ve"; // pre-composed charactersecho "e\u{0301}le\u{0300}ve"; // e + combining characters?></pre></body></html>
下面是浏览器的输出。

