首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将智能引号替换为常规引号会导致整个字符串被擦除

将智能引号替换为常规引号会导致整个字符串被擦除
EN

Stack Overflow用户
提问于 2018-01-24 05:43:16
回答 1查看 315关注 0票数 1

我有一些最初是RTF文件的文件。它们是用Microsoft Word 2016打开的,并另存为.txt文件。未对这些文件进行任何其他更改。它们被转移到Linux系统上。

使用命令时:

在Linux上,他们显示为Non-ISO extended-ASCII text, with CRLF line terminatorsfile myfile.txt

我正在将文件读入PHP并逐行处理它们。我试图用常规的单引号替换任何正确的智能引号,但我的整个字符串都被擦除了。

我的代码如下所示:

代码语言:javascript
复制
$text = "I can’t go for supper";
$text = preg_replace('/\x{2019}/u', "'", $text);
echo $text;

这里的撇号是一个正确的智能引号,它在Vim中显示为<92>。在网上搜索后,我发现这实际上是unicode字符2019

但是,当我尝试显示$text的新值时,什么也没有显示。

我的代码出了什么问题?为什么它要清除整个文本字符串?

EN

回答 1

Stack Overflow用户

发布于 2018-01-24 06:11:16

经过进一步的研究,我确定字符代码<92>是特定于Windows1252字符编码的。在能够操作字符串之前,我首先需要将其转换为UTF-8。

以下代码可以正常工作:

代码语言:javascript
复制
$text = "I can’t go for supper";
$text = iconv("Windows-1251", "UTF-8", $text);
$text = preg_replace('/\x{2019}/u', "'", $text);
echo $text;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48411314

复制
相关文章

相似问题

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