有人有strtr()
函数的多字节变体吗?
所需用法示例:
Example:
$from = 'ľľščťžýáíŕďňäô'; // these chars are in UTF-8
$to = 'llsctzyairdnao';
// input - in UTF-8
$str = 'Kŕdeľ ďatľov učí koňa žrať kôru.';
$str = mb_strtr( $str, $from, $to );
// output - str without diacritic
// $str = 'Krdel datlov uci kona zrat koru.';
4条答案
按热度按时间0md85ypi1#
我 * 相信 *
strtr
is multi-byte safe,无论哪种方式,因为str_replace
* 是 * 多字节安全的,您可以 Package 它:由于没有
mb_str_split
函数,您还需要编写自己的函数(使用mb_substr
和mb_strlen
),或者您可以只使用PHP UTF-8实现(略有更改):然而,如果你想找一个函数来删除字符串中的所有(拉丁?)重音,你可能会发现下面的函数很有用:
pbgvytdp2#
tjvv9vkg3#
使用str_replace可能是一个不错的解决方案。
使用PHP 5.2在我的机器上打印:
plicqrtu4#
strtr()
has two valid signatures for receiving its parameters.您实现
strtr()
的方式执行逐字节转换--这显然不适合多字节字符。正确的实现是向函数提供一个要翻译的字符的关联数组--这是多字节安全的方法。
还应当注意,存在被开发来处理这样的任务的库和本机函数。