我有一个包含子弹的字符串•格式如下:
$string = "Yay bullets!!\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n#somany";
我需要回显显示子弹的字符串。我最接近打印的方法是制作$string = "\u2022";
然后回显json_decode('"' . $string . '"');
打印子弹就好了。
当我尝试对完整的$string
做同样的事情时,我根本没有结果,也没有错误。
以下是我尝试使用结果输出的一些内容:
$raw = htmlspecialchars("Yay bullets!!\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n#yes", ENT_QUOTES);
echo $raw;
结果:
Yay bullets!!
\u2022
\u2022
\u2022
\u2022
\u2022
#yes
当我尝试:
echo mb_convert_encoding($raw, 'UTF-8', 'HTML-ENTITIES');
结果:与上述相同。没有变化。
当我尝试:
echo json_decode('"' . $raw . '"');
结果:无输出。
当我尝试:
echo mb_convert_encoding($raw, 'UTF-8', 'UTF-16BE');
结果:奡礠扵汬整猡ℊ㈰㈲ੜ㈰㈲ੜ甲〲㈊㈰㈲ੜ㈰㈲ੜ甲〲㈊屵<<
我非常感谢帮助弄清楚如何正确输出。
感谢。
修改
除了子弹,我也无法打印表情符号参考代码,例如\\ud83d\\udc93
。参考此处:http://emojipedia.org/face-with-tears-of-joy/
答案 0 :(得分:0)
function decodeEmoticons($src) {
$replaced = preg_replace("/\\\\u([0-9A-F]{1,4})/i", "&#x$1;", $src);
$result = mb_convert_encoding($replaced, "UTF-16", "HTML-ENTITIES");
$result = mb_convert_encoding($result, 'utf-8', 'utf-16');
return $result;
}
$r = "Yay bullets!!\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n\\u2022\n#somany";
echo decodeEmoticons($r);
$src = "\u263a\ud83d\ude00\ud83d\ude01\ud83d\ude02\ud83d\ude03";
echo decodeEmoticons($src);