相关疑难解决方法(0)

PHP DomDocument无法处理utf-8字符(☆)

网络服务器使用utf-8编码提供响应,所有文件都使用utf-8编码保存,我所知道的设置都已设置为utf-8编码.

这是一个快速程序,用于测试输出是否有效:

<?php
$html = <<<HTML
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Test!</title>
</head>
<body>
    <h1>? Hello ? World ?</h1>
</body>
</html>
HTML;

$dom = new DomDocument("1.0", "utf-8");
$dom->loadHTML($html);

header("Content-Type: text/html; charset=utf-8");
echo($dom->saveHTML());
Run Code Online (Sandbox Code Playgroud)

该计划的输出是:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Test!</title></head><body>
    <h1>&acirc;&#152;&#134; Hello &acirc;&#152;&#134; World &acirc;&#152;&#134;</h1>
</body></html>
Run Code Online (Sandbox Code Playgroud)

其呈现为:

Hello你好 世界††


我能做错什么?我需要告诉DomDocument正确处理utf-8还有多少具体内容?

php utf-8 domdocument

52
推荐指数
3
解决办法
3万
查看次数

14
推荐指数
2
解决办法
1万
查看次数

htmlentites不为表情符号工作

我试图显示一个字符html实体

echo htmlentities(htmlentities("&"));
//outputs &amp;
echo htmlentities(htmlentities("<"));
//outputs &lt;
Run Code Online (Sandbox Code Playgroud)

但它似乎不适用于表情符号

echo htmlentities(htmlentities(""));
//outputs 
Run Code Online (Sandbox Code Playgroud)

我怎样才能输出&#128526;


编辑:

我试图显示用户输入的所有html实体编码的字符串.
echo htmlentities(htmlentities($input))

例: "this & that " -> "this &amp; that &#128526;"

php html-entities emoji

7
推荐指数
1
解决办法
3981
查看次数

如何使用PHP的preg_replace函数将Unicode代码点转换为实际字符/ HTML实体?

我想将字符串格式的一组Unicode代码点转换为实际字符和/或HTML实体(结果很好).

例如,如果我有以下字符串赋值:

$str = '\u304a\u306f\u3088\u3046';
Run Code Online (Sandbox Code Playgroud)

我想使用该preg_replace函数将这些Unicode代码点转换为实际字符和/或HTML实体.

正如我在其他Stack Overflow帖子中看到的类似问题,我首先尝试了以下内容:

$str = '\u304a\u306f\u3088\u3046';
$str2 = preg_replace('/\u[0-9a-f]+/', '&#x$1;', $str);
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试这样做时,我都会收到以下PHP错误:

警告:preg_replace()[function.preg-replace]:编译失败:PCRE不支持\ L,\ l,\ N,\ U或\ u

我尝试了各种各样的事情,比如将u标志添加到正则表达式或更改/\u[0-9a-f]+//\x{[0-9a-f]+}/,但似乎没有任何效果.

另外,我已经查看了我在网上可以找到的各种其他相关页面/帖子,这些页面/帖子与将PHP代码点转换为PHP中的实际字符有关,但要么我缺少一些关键的东西,要么出错了,因为我可以'解决我遇到的问题.

有人可以给我一个具体的解决方案,如何将一串Unicode代码点转换为实际字符和/或一串HTML实体?

php regex unicode preg-replace html-entities

2
推荐指数
1
解决办法
2535
查看次数