gpt4 book ai didi

PHP:将字符转换为它们的(十进制)数字表示(在字符串中)

转载 作者:行者123 更新时间:2023-12-05 07:19:06 28 4
gpt4 key购买 nike

我们正在做一个项目,我们必须模仿旧遗留系统的一些导出输出。

这些导出是基于文本的,并以 WINDOWS-1252 编码进行编码,其中特殊字符应以其十进制/数字表示形式进行编码,例如α 应该是 α

我尝试使用 htmlspecialcharshtmlentitiesmb_convert_encoding - 不幸的是没有成功。

目前我正在遍历字符串的每个字符并检查它是否是 ASCII 字符。如果字符不是有效的 ASCII,我将使用 mb_ord 将其转换为十进制表示形式,请参阅我的函数:

private function transformString(string $str)
{
if (mb_check_encoding($str, 'ASCII') === true) {
return $str;
} else {
$characters = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);
$transformedString = '';
foreach ($characters as $character) {
if (mb_check_encoding($character, 'ASCII') === false) {
$character = sprintf('&#%s;', mb_ord($character));
}
$transformedString .= $character;
}
return $transformedString;
}
}

这个解决方案似乎可行,但我很好奇这种转换是否有更简洁的方法?

提前致谢!

最佳答案

此函数使用 preg_replace_callback() 替换所有非 ASCII 字符。

function encodeNonAscii($string){
return preg_replace_callback('/[^\x00-\x7F]/u',
function($match){
return '&#'.mb_ord($match[0]).';';
},
$string
);
}

只是更短、更快。

关于PHP:将字符转换为它们的(十进制)数字表示(在字符串中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58013821/

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