在字符串中使用智能引号会导致MYSQL中的存储问题以及后续渲染问题。所以我有一个PHP函数,用常规引号替换智能引号。
但是,当字符串包含日语字符时,它会将某些字符转换为不可打印字符和常规字符的组合。
我假设这是因为外语字符被编码并且与智能引用二进制编码存在部分匹配导致此问题。
这是一个演示此问题的脚本:
<?php
function convert_smart_quotes($string)
{
$search = array(chr(145),
chr(146),
chr(147),
chr(148));
$replace = array("'",
"'",
'"',
'"');
return str_replace($search, $replace, $string);
}
$input_str = "すっぴん美人になるためにやってはいけない「3スギ」とは?";
$output_str = convert_smart_quotes($input_str);
echo $output_str;
基本上,我希望此功能在基于拉丁字符的语言字符串时起作用。同时,如果它是外语,我也不希望它弄乱字符串。由于没有简单的方法来检测php中的语言,我该如何实现呢?