如何在 PHP 中替换 Microsoft 编码的引号

2022-08-30 08:39:16

由于应用程序中的编码问题,我需要将Microsoft Word版本的单引号和双引号()替换为常规引号('和”)。我不需要它们是HTML实体,我无法更改我的数据库架构。“ ” ‘ ’

我有两个选择:使用正则表达式或关联的数组。

有没有更好的方法来做到这一点?


答案 1

我找到了这个问题的答案。在php中使用函数只需要一行代码:iconv()

// replace Microsoft Word version of single  and double quotations marks (“ ” ‘ ’) with  regular quotes (' and ")
$output = iconv('UTF-8', 'ASCII//TRANSLIT', $input);     

答案 2

考虑到你只想替换几个特定且标识良好的字符,我会用数组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,所以我不能自己测试)

我不记得我们在工作中使用了什么(我不是那个必须处理这种输入的人),但这是同一种东西......


推荐