很多站长朋友们都不太清楚汉字实体转换php,今天小编就来给大家整理汉字实体转换php,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP用str_replace()能替换中文汉字吗? 2、 如何正确运用PHP json_encode函数进行中文转换 3、 php搜索 繁体怎么转成简体 4、 汉字怎样转换十六进制php 5、 php 汉字 转换字符?如:我的提问 转换后是:\u6211\u7684\u63d0\u95ee 是通过那个函数转换的呀 PHP用str_replace()能替换中文汉字吗?PHP能用str_replace()能替换中文汉字,替换方法为:
1、PHP进行字符串替换的两个常用方法。
2、编写PHP脚本,定义基本的字符串,查找对象,和替换对象。
3、使用str_replace()进行替换并打印。
4、保存并查看str_replace()的打印结果。
5、使用strtr()进行替换并打印。
6、保存并查看strtr()的打印结果。
如何正确运用PHP json_encode函数进行中文转换在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。
[php] view plaincopyprint?
<?php
$arr = array
(
'Name'=>'希亚',
'Age'=>20
);
$jsonencode = json_encode($arr);
echo $jsonencode;
?>
程序运行结果如下:
[php] view plaincopyprint?
{"Name":null,"Age":20}
json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。
[php] view plaincopyprint?
<?php
$array = array
(
'title'=>iconv('gb2312','utf-8','这里是中文标题'),
'body'=>'abcd...'
);
echo json_encode($array);
?>
这个程序的运行结果为:
[php] view plaincopyprint?
{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}
数组中所有中文在json_encode之后都不见了或者出现\u2353等。解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。
[php] view plaincopyprint?
<?php
/**************************************************************
*
* 使用特定function对数组中所有元素做处理
* @param string $array 要处理的字符串
* @param string $function 要执行的函数
* @return boolean $apply_to_keys_also 是否也应用到key上
* @access public
*
*************************************************************/
function arrayRecursive($array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
if ($apply_to_keys_also is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
/**************************************************************
*
* 将数组转换为JSON字符串(兼容中文)
* @param array $array 要转换的数组
* @return string 转换得到的json字符串
* @access public
*
*************************************************************/
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}
$array = array
(
'Name'=>'希亚',
'Age'=>20
);
echo JSON($array);
?>
这次成功了,运行结果如下:
[php] view plaincopyprint?
{"Name":"希亚","Age":"20"}
php搜索 繁体怎么转成简体PHP实现---汉字简体繁体转换
这是以class包装好的简繁体转换的class,
另外需要两个table档:
1.
2.
程式如下: CCharset.php3
<? //=====================================================
// 程式员: Magic Jerry
//
// function Big5_Gb($str) => big5转GB for string
// function Gb_Big5($str) => GB转Big5 for string
//=====================================================
class CCharset {
var $gb_map="gb.map"; //如果要放到别的路径,要加上完整路径
var $big5_map="big5.map"; //例如 ="/home/table/gb.map
var $dep_char = 127;
//-----------------------------------------------------------------
function cbig5_gb($str,$fd) {
$c=ord(substr($str,0,1));
$x=ord(substr($str,1,1));
$address=(($c-160)*510)+($x-1)*2;
fseek($fd, $address);
$hi=fgetc($fd);
$lo=fgetc($fd);
return "$hi$lo";
}
function cgb_big5($str,$fd) {
$c=ord(substr($str,0,1));
$x=ord(substr($str,1,1));
$address=(($c-160)*510)+($x-1)*2;
fseek($fd, $address);
$hi=fgetc($fd);
$lo=fgetc($fd);
return "$hi$lo";
}
//-----------------------------------------------------------------
function Big5_Gb($str) {
$fd = fopen ($this->gb_map, "r");
$str=str_replace("charset=big5","charset=gb2312", $str);
$outstr="";
for($i=0;$i<strlen($str);$i++) {
$ch=ord(substr($str,$i,1));
if($ch > $this->dep_char) {
$outstr.=$this->cbig5_gb(substr($str,$i,2),$fd);
$i++;
} else {
$outstr.=substr($str,$i,1);
}
}
fclose ($fd);
return $outstr;
}
//-----------------------------------------------------------------
function Gb_Big5($str) {
$fd = fopen ($this->big5_map, "r");
$str=str_replace("charset=gb2312","charset=big5", $str);
$outstr="";
for($i=0;$i<strlen($str);$i++) {
$ch=ord(substr($str,$i,1));
if($ch > $this->dep_char) {
$outstr.=$this->cgb_big5(substr($str,$i,2),$fd);
$i++;
} else {
$outstr.=substr($str,$i,1);
}
}
fclose ($fd);
return $outstr;
}
}
?>
===================================================================
使用范例:
<?
// Designer: Magic Jerry
//====直接转换文字串 的使用方法========
include("CCharset.php3");
$obj=new CCharset;
$big5="这是一个big5的文字串";
$tgb=$obj->Big5_Gb($big5);
echo $tgb; //===> $tgb为转换好的gb码字串
$tbig5=$obj->Gb_Big5($tgb);
echo $tbig5; // 又被转回来了: big5
//======================================
?>
<?
//如果直接转换网页 或是档案
// 语法 这个程式.php3?http://要转码的网页url或档案
// example: 转换奇摩首页
// 这个程式.php3?
// 注意: 以下写法如遇到该网页有使用cookie,例如认证user,可能会被踢回,login错误..
// 为什麼? 想想看吧... @_@
include("CCharset.php3");
$file=$QUERY_STRING;
$fcontents = join( '', file( "$file" ) );
$fcontents=str_replace("<head>","<head><base href=$file>", $fcontents);
$code=new CCharset;
$gb=$code->Big5_Gb($fcontents);
echo $gb;
?>
范例:
<?
if($func=="charset") {
setcookie("CHAR_GB",$GB,time()+ 31536000);
$t=time();
$url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING;
$url=str_replace("?func=charsetGB=1","", $url);
$url=str_replace("?func=charsetGB=0","", $url);
$url=str_replace("func=charsetGB=1","", $url);
$url=str_replace("func=charsetGB=0","", $url);
//echo $url;
//echo "SET to Charset = $CHAR_GB";
$t=time();
echo "
<script language=javascript>
document.location='$url'
</script>
";
exit;
}
//phpinfo();
if($CHAR_GB==1 !$istran ) {
include("CCharset.php3");
if(strlen($QUERY_STRING)) $url="http://".$HTTP_HOST.$PHP_SELF."?".$QUERY_STRING."istran=1";
else $url="http://".$HTTP_HOST.$PHP_SELF."?istran=1";
while (list ($key, $val) = each ($HTTP_COOKIE_VARS)) {
//echo "$key => $val<br>";
$url.="".$key."=".urlencode($val);
}
$fcontents = join( '', file( "$url" ) );
$code=new CCharset;
$fcontents=$code->Big5_Gb($fcontents);
//echo "转换过的 $CHAR_GB";
echo $fcontents;
exit;
}
/
汉字怎样转换十六进制php//汉字进制转换
//$string 传入的汉字或其它字符
//$tobase 要转换的进制 范围 2~36 之间任意取值
//$back 返回形式,0 转换成进制代码 ; 1 将进制转换成汉字
function ASCII($String,$tobase,$back){
if( $tobase > 1 $tobase < 37 ){
if($back == 0){
return preg_replace('/(.)/es',"str_pad(base_convert(ord('\\1'),10,$tobase),8,'0',STR_PAD_LEFT)",$String);
}else{
return preg_replace('/(\w{8})/e',"chr(base_convert('\\1',$tobase,10))",$String);
}
}else{
return false;
}
}
//范例
$str = '我爱你';
$en = ASCII($str,2,0); // 转换成2进制: 111001101000100010010001111001111000100010110001111001001011110110100000
echo ASCII($en,2,1); // 转换成汉字:我爱你
$en = ASCII($str,8,0); // 转换成8进制: 000003460000021000000221000003470000021000000261000003440000027500000240
echo ASCII($en,8,1); // 转换成汉字:我爱你
$en = ASCII($str,10,0); // 转换成10进制: 000002300000013600000145000002310000013600000177000002280000018900000160
echo ASCII($en,10,1); // 转换成汉字:我爱你
$en = ASCII($str,10,0); // 转换成10进制: 000002300000013600000145000002310000013600000177000002280000018900000160
echo ASCII($en,10,1); // 转换成汉字:我爱你
$en = ASCII($str,16,0); // 转换成10进制: 000000e60000008800000091000000e700000088000000b1000000e4000000bd000000a0
echo ASCII($en,16,1); // 转换成汉字:我爱你
php 汉字 转换字符?如:我的提问 转换后是:\u6211\u7684\u63d0\u95ee 是通过那个函数转换的呀json_encode可以,但会加上引号,
有个bin2hex,但是不会给你加上\u
如果你非要\u的话,可以试试以下代码
$hexcode = bin2hex('中国');
$result = '\u'.substr(chunk_split($hexcode, 4, '\u'), 0,-2);
echo $result;
关于汉字实体转换php的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于汉字实体转换php php字符集转换的详细内容...