code:php 将字符串转换为html实体
tags:htmlentity,php,iconv
将字符串转换为html实体
$src 原始字符串
$output 输出字符串
$src= htmlspecialchars($src); // translate &"<> to HTML entities
/** translate \n to <br/>**/
$src= str_replace("\n", "<br/>", $src);
$str = iconv($deck->charset, "UTF-16BE", $src); # 将原始字符串转换为utf16编码
for ($i = 0; $i < strlen($str); $i++,$i++) { # 将每个标准ascii字符以外的(大于128)字符转换为实体
$code = ord($str{$i}) * 256 + ord($str{$i + 1});
if ($code < 128) {
$output .= chr($code);
} else if ($code != 65279) {
$output .= "&#".$code.";";
}
}
摘录 html实体与网页编码
--------------------------------------------------------------
--http://www.ugia.cn/?p=72
在php中我们可以用mbstring的mb_convert_encoding函数实现这个正向及反向的转化。
如:
mb_convert_encoding ("你好", "gb2312", "HTML-ENTITIES"); //输出:你好
可以查看这个页面:htmlentities.html, 不管选择什么网页编码,网页都能正常显示。
如果需要对整个页面转化,则只需要在php文件的头部加上这三行代码:
mb_http_output("HTML-ENTITIES");
ob_start('mb_output_handler');
在asp中我们可以用下面这个函数来实现这个转化:
For i = 1 to Len(str)
char = mid(str, i, 1)
If AscW(char) > 0 then
htmlentities = htmlentities & "&#" & Ascw(char) & ";"
Else
htmlentities = htmlentities & "&#" & (65536 + ascW(char)) & ";"
End if
Next
End Function
--------------------------------------------------------------
mb_convert_encoding 只在php5之后才有 我用的是php4所以用不了 :)
摘录:将字符转成unicode
---------------------------------------------------------------
-- http://www.web-bbs.com/forum/htm_data/10/0512/258.html
Js版
<script>
test = "你好abc"
str = ""
for( i=0; i<test.length; i++ )
{
temp = test.charCodeAt(i).toString(16);
str += "\\u"+ new Array(5-String(temp).length).join("0") +temp;
}
document.write (str)
</script>
vbs版
Function Unicode(str1)
Dim str,temp
str = ""
For i=1 to len(str1)
temp = Hex(AscW(Mid(str1,i,1)))
If len(temp) < 5 Then temp = right("0000" & temp, 4)
str = str &amp;amp; "\u" & temp
Next
Unicode = str
End Function
---------------------------------------------------------------
摘录的两个没有进行测试 放在这里有待参考
没有评论:
发表评论