查找独立于 php 代码字符集的特定 UTF8 字符?
Find specific UTF8 chars independent of php code charset?
我喜欢匹配一些特定的 UTF8 字符。就我而言,德国变音符号。这就是我们的示例代码:
{UTF-8 file}
<?php
$search = 'ä,ö,ü';
$replace = 'ae,oe,ue';
$string = str_replace(explode(',', $search), explode(',', $replace), $string);
?>
此代码为 UTF-8。现在我想确保这将独立于(大多数)使用的代码字符集。
这是我应该走的路吗(used UTF-8 check)?
{ISO file}
<?php
$search = 'ä,ö,ü';
$search = preg_match('~~u', $search) ? $search : utf8_encode($search);
$replace = 'ae,oe,ue';
$string = str_replace(explode(',', $search), explode(',', $replace), $string);
?>
- 你应该控制你的源代码的编码方式,突然从你下面改变它的编码是很奇怪的。
- 如果 实际上是您想要抵消的合法问题,那么您甚至不能依赖您的源代码是 Latin-1 或 UTF-8,它可以是任意数量的其他编码(尽管在实践中承认 Latin-1 是一个很常见的猜测)。所以
utf8_encode
根本不能保证解决您的问题。
要 100% 不知道源代码文件的编码,请将字符表示为原始字节:
$search = "\xC3\xA4,\xC3\xB6,\xC3\xBC"; // ä, ö and ü in UTF-8
请注意,这仍然不能保证 $string
的编码,您需要知道 and/or 控制其编码与手头的这个问题分开。在某些时候你只需要确定你使用的编码,你不能一直不知道它。
我喜欢匹配一些特定的 UTF8 字符。就我而言,德国变音符号。这就是我们的示例代码:
{UTF-8 file}
<?php
$search = 'ä,ö,ü';
$replace = 'ae,oe,ue';
$string = str_replace(explode(',', $search), explode(',', $replace), $string);
?>
此代码为 UTF-8。现在我想确保这将独立于(大多数)使用的代码字符集。
这是我应该走的路吗(used UTF-8 check)?
{ISO file}
<?php
$search = 'ä,ö,ü';
$search = preg_match('~~u', $search) ? $search : utf8_encode($search);
$replace = 'ae,oe,ue';
$string = str_replace(explode(',', $search), explode(',', $replace), $string);
?>
- 你应该控制你的源代码的编码方式,突然从你下面改变它的编码是很奇怪的。
- 如果 实际上是您想要抵消的合法问题,那么您甚至不能依赖您的源代码是 Latin-1 或 UTF-8,它可以是任意数量的其他编码(尽管在实践中承认 Latin-1 是一个很常见的猜测)。所以
utf8_encode
根本不能保证解决您的问题。 要 100% 不知道源代码文件的编码,请将字符表示为原始字节:
$search = "\xC3\xA4,\xC3\xB6,\xC3\xBC"; // ä, ö and ü in UTF-8
请注意,这仍然不能保证
$string
的编码,您需要知道 and/or 控制其编码与手头的这个问题分开。在某些时候你只需要确定你使用的编码,你不能一直不知道它。