首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML特殊字符:†和&Dagger在DOMDocument中

HTML特殊字符:†和&Dagger在DOMDocument中
EN

Stack Overflow用户
提问于 2013-08-22 11:52:44
回答 1查看 1.9K关注 0票数 0

我有一个dom文档,我想在其中添加一些特殊字符。

我要做的是首先用regexp检测字符串中的特殊字符。为此,我将html上的utf-8字符转换为

代码语言:javascript
复制
$string = "Test string 1,§,†,‡";
$string_html = htmlentities($string_html, ENT_QUOTES, "UTF-8");

这很好,我马上就到了:

代码语言:javascript
复制
"Test string 1,§,†,‡"

现在,我只想得到特殊的角色。我使用的是regexp,它返回的数组有:

代码语言:javascript
复制
[0] => '&sect';
[1] => '&dagger';
[2] => '&Dagger';

现在,我想将这些特殊字符添加到dom文档中,但使用unicode。我试着:

代码语言:javascript
复制
$string_utf8 = html_entity_decode($string_html);

$dom_output->createElement( 'string', utf8_encode($string_utf8));

接下来的结果是:

§字符显示为§,而†和‡则保持不变。

知道为什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 12:14:17

§的问题在于它位于unicode表中的0xA7位置。但是,该特定字符被编码为双字节序列0xC2A7.您的输出被呈现为ISO-8859-1或类似的编码,因此这个(0xC2)出现在您的预期字符之前(因为巧合的是,它有相同的最后一个字节-我经常看到它被编码为c)

然而,匕首和双匕首在unicode表中的位置要远得多:0x20200x2021。因此,在编码它们时不存在混淆。

我认为这个问题可能是由PHP文件本身被编码成一个单字节字符集造成的,正是这一点导致了0xA7的问题。确保您的PHP文件是以正确的格式编码的,否则它将对您的字符串做出错误的假设。

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

https://stackoverflow.com/questions/18379663

复制
相关文章

相似问题

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