【发布时间】:2018-01-23 21:43:15
【问题描述】:
我有一些最初是 RTF 文件的文件。它们使用 Microsoft Word 2016 打开并保存为 .txt 文件。没有对文件进行其他更改。它们被转移到 Linux 系统。
使用命令时:
file myfile.txt 在 Linux 上显示为 Non-ISO extended-ASCII text, with CRLF line terminators。
我正在将文件读入 PHP 并逐行处理它们。我正在尝试用常规单引号替换任何正确的智能引号,但我的整个字符串都被删除了。
我的代码如下所示:
$text = "I can’t go for supper";
$text = preg_replace('/\x{2019}/u', "'", $text);
echo $text;
这里的撇号是正确的智能引用,在 Vim 中显示为 <92>。在网上研究后,我发现这实际上是 unicode 字符2019。
但是,当我尝试显示 $text 的新值时,没有显示任何内容。
我的代码有什么问题,为什么它会清除整个文本字符串?
【问题讨论】:
-
无法复制。 3v4l.org/8aBbH
-
问题是 3v4l.org 上的那些引用没有显示为代码 所以不是真实的表示。
-
代码
<92>是什么意思? -
@AbraCadaver 在回复您时,我发现字符代码 是 Windows-1252 编码集的特定部分。我相信解决方案是在我读到的每一行上使用 iconv()。