首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用PHP转换Microsoft Word特殊字符

使用PHP转换Microsoft Word特殊字符
EN

Stack Overflow用户
提问于 2011-09-14 23:55:29
回答 4查看 19.9K关注 0票数 20

我正在尝试转换由用户粘贴的Word文本,其中包含MS Word省略号和长破折号,然后再进一步处理。

我在这里找到了一个旧的问题http://www.codingforums.com/archive/index.php/t-47163.html的解决方案,但它对我不起作用。例如,在替换省略号之后,变量返回为空。以前从未见过这样的事情:

代码语言:javascript
代码运行次数:0
运行
复制
$src = "Long word dash – and weird Word ellipsis…";
$src = str_replace("‘", "'", $src);
$src = str_replace("’", "'", $src);
$src = str_replace("”", '"', $src);
$src = str_replace("“", '"', $src);
$src = str_replace("–", "-", $src);
$src = str_replace("…", "...", $src);
print $src;

有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-11 04:10:47

对于在PHP中得到菱形问号的任何人来说,这种替换UTF-8字符的方法比使用chr函数工作得更好。

代码语言:javascript
代码运行次数:0
运行
复制
$search = [                 // www.fileformat.info/info/unicode/<NUM>/ <NUM> = 2018
                "\xC2\xAB",     // « (U+00AB) in UTF-8
                "\xC2\xBB",     // » (U+00BB) in UTF-8
                "\xE2\x80\x98", // ‘ (U+2018) in UTF-8
                "\xE2\x80\x99", // ’ (U+2019) in UTF-8
                "\xE2\x80\x9A", // ‚ (U+201A) in UTF-8
                "\xE2\x80\x9B", // ‛ (U+201B) in UTF-8
                "\xE2\x80\x9C", // “ (U+201C) in UTF-8
                "\xE2\x80\x9D", // ” (U+201D) in UTF-8
                "\xE2\x80\x9E", // „ (U+201E) in UTF-8
                "\xE2\x80\x9F", // ‟ (U+201F) in UTF-8
                "\xE2\x80\xB9", // ‹ (U+2039) in UTF-8
                "\xE2\x80\xBA", // › (U+203A) in UTF-8
                "\xE2\x80\x93", // – (U+2013) in UTF-8
                "\xE2\x80\x94", // — (U+2014) in UTF-8
                "\xE2\x80\xA6"  // … (U+2026) in UTF-8
    ];

    $replacements = [
                "<<", 
                ">>",
                "'",
                "'",
                "'",
                "'",
                '"',
                '"',
                '"',
                '"',
                "<",
                ">",
                "-",
                "-",
                "..."
    ];

    str_replace($search, $replacements, $string);
票数 49
EN

Stack Overflow用户

发布于 2011-09-15 00:10:05

嗯。我使用这个函数来清理复制到RTE中的文本。在这种情况下,它可能工作,也可能不工作。它会转换为HTML实体,但您可以将其调整为仅转换为常规字符:

代码语言:javascript
代码运行次数:0
运行
复制
function convertFromCP1252($string)
{
    $search = array('&',
                    '<',
                    '>',
                    '"',
                    chr(212),
                    chr(213),
                    chr(210),
                    chr(211),
                    chr(209),
                    chr(208),
                    chr(201),
                    chr(145),
                    chr(146),
                    chr(147),
                    chr(148),
                    chr(151),
                    chr(150),
                    chr(133),
                    chr(194)
                );

     $replace = array(  '&amp;',
                        '&lt;',
                        '&gt;',
                        '&quot;',
                        '&#8216;',
                        '&#8217;',
                        '&#8220;',
                        '&#8221;',
                        '&#8211;',
                        '&#8212;',
                        '&#8230;',
                        '&#8216;',
                        '&#8217;',
                        '&#8220;',
                        '&#8221;',
                        '&#8211;',
                        '&#8212;',
                        '&#8230;',
                        ''
                    );

    return str_replace($search, $replace, $string);
}
票数 10
EN

Stack Overflow用户

发布于 2013-05-16 21:11:58

很好的解决方案。我复制并粘贴了它,它没有问题。在进一步的研究中,我添加了一些不在搜索和替换数组中的字符。为了找到ASCII字符id号,我编写了一个PHP函数,它显示了ASCII字符号是什么:

代码语言:javascript
代码运行次数:0
运行
复制
function stdump($s){

  for($i=0;$i<strlen($s);$i++){

    echo substr($s,$i,1) . "(" . ord(substr($s,$i,1)) . ")";

  }

  echo "<br/>";
}

字符被显示,其旁边的ascii编号显示在括号中。如下所示:

echo stdump(“GPU?echo?”);

产生:

G(71)P(80)U(85)s(115)-(226)欧元(128)φ(166)

希望这能有所帮助。

--基思

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7419302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档