如何在 PHP 中替换 Microsoft 编码的引号
2022-08-30 08:39:16
由于应用程序中的编码问题,我需要将Microsoft Word版本的单引号和双引号()替换为常规引号('和”)。我不需要它们是HTML实体,我无法更改我的数据库架构。“ ” ‘ ’
我有两个选择:使用正则表达式或关联的数组。
有没有更好的方法来做到这一点?
由于应用程序中的编码问题,我需要将Microsoft Word版本的单引号和双引号()替换为常规引号('和”)。我不需要它们是HTML实体,我无法更改我的数据库架构。“ ” ‘ ’
我有两个选择:使用正则表达式或关联的数组。
有没有更好的方法来做到这一点?
我找到了这个问题的答案。在php中使用函数只需要一行代码:iconv()
// replace Microsoft Word version of single and double quotations marks (“ ” ‘ ’) with regular quotes (' and ")
$output = iconv('UTF-8', 'ASCII//TRANSLIT', $input);
考虑到你只想替换几个特定且标识良好的字符,我会用数组str_replace
:你显然不需要重型火炮正则表达式会给你带来;-)
如果您遇到其他一些特殊字符(该死的从Microsoft Word复制粘贴...),您可以在必要时/每当它们被识别时将它们添加到该数组中。
我能给你的评论的最好的答案可能是这个链接:用PHP转换智能报价
以及关联的代码(引用该页面)::
function convert_smart_quotes($string)
{
$search = array(chr(145),
chr(146),
chr(147),
chr(148),
chr(151));
$replace = array("'",
"'",
'"',
'"',
'-');
return str_replace($search, $replace, $string);
}
(我这台计算机上没有Microsoft Word,所以我不能自己测试)
我不记得我们在工作中使用了什么(我不是那个必须处理这种输入的人),但这是同一种东西......