gpt4 book ai didi

php - 多字节 strtr() -> mb_strtr()

转载 作者:IT王子 更新时间:2023-10-29 00:11:00 25 4
gpt4 key购买 nike

有没有人写过函数 strtr() 的多字节变体?我需要这个。

编辑 1(所需用法示例):

Example:$from = 'ľľščťžýáíŕďňäô'; // these chars are in UTF-8$to   = 'llsctzyaiŕdnao';// 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.';

最佳答案

相信 strtr is multi-byte safe ,无论哪种方式,因为 str_replace 多字节安全的,你可以包装它:

function mb_strtr($str, $from, $to)
{
return str_replace(mb_str_split($from), mb_str_split($to), $str);
}

由于没有 mb_str_split 函数,您还需要编写自己的函数(使用 mb_substrmb_strlen),或者您可以只使用PHP UTF-8实现(略有更改):

function mb_str_split($str) {
return preg_split('~~u', $str, null, PREG_SPLIT_NO_EMPTY);;

}

但是,如果您正在寻找一个函数来从字符串中删除所有(拉丁语?)重音符号,您可能会发现以下函数很有用:

function Unaccent($string)
{
return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}

echo Unaccent('ľľščťžýáíŕďňä'); // llsctzyairdna
echo Unaccent('Iñtërnâtiônàlizætiøn'); // Internationalizaetion

关于php - 多字节 strtr() -> mb_strtr(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2758736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com