将所有字符转换为十六进制或十六进制HTML代码

时间:2011-05-31 01:28:31

标签: php html encoding

有没有办法可以使用PHP将所有字符(包括常规字符)转换成这样的字符:

  

&安培;#38; &安培;#233; &安培;#224; &安培;#231; &安培;#60;

当我说普通字符时我的意思是说像“ABCD123!@#$”等字符

这可能吗?先谢谢!

3 个答案:

答案 0 :(得分:2)

你可以用这个衬里做到这一点。

  1. 将字符串拆分为正确的数组。
  2. 迭代字符获取其序数值。
  3. 加入实体模式。
  4. echo '&#' . join(';&#', array_map('ord', str_split($str))) . ';';
    

    CodePad

    另外,你说你想将字符转换为它们的十六进制等值,但是你的值都不是十六进制,除非这是巧合而你的例子中没有a-f

答案 1 :(得分:2)

有几种方法。一个是

join('', array_map(create_function('$c', 'return "&#".ord($c).";";'), str_split($string)));

答案 2 :(得分:2)

在Alex的/ Anomie的回答中,为了获得完整的Unicode支持,你可以使用http://hsivonen.iki.fi/php-utf8/处的包来做:

'&#' . join(';&#', utf8ToUnicode($str) . ';'