PHP将十六进制输出特殊字符

时间:2018-07-22 11:37:41

标签: php hex special-characters

是否可以将诸如&符&之类的特殊字符输出为&而不是&

使用htmlenties或htmlspecialchars时,我找不到提供此行为的设置。

任何建议。

2 个答案:

答案 0 :(得分:0)

您需要先urlencode,然后再str_replace

$string = 'Stackoverflow # & " ';  
$string = urlencode($string);    
$find = ['%', '+']; 
$replace = ['&#x', ' '];
$string = str_replace($find,$replace, $string);
echo $string;

答案 1 :(得分:0)

我自己弄清楚了。 我使用mb_ord与ord相似,只不过它用于UTF-8等多字节编码。 另外,只有在安装了PHP 7.2的情况下,它才起作用。

<?php 
$text = html_entity_decode('&infin;&auml;&euro;&auml;&atilde;&acirc;',ENT_COMPAT | ENT_HTML401,'UTF-8');
$text_converted = '';
for($i=0;$i<mb_strlen($text,'UTF-8');$i++){
    $text_converted .= sprintf('&#x%X;',mb_ord(mb_substr($text,$i,1,'UTF-8')));
}
echo $text_converted;
echo '<br>';
echo str_replace('&','&amp;',$text_converted);
echo '<br>';
echo $text;
?>