iconv("GB2312","UTF-8",$str)
php.ini
;php_iconv.dll去掉分号
php.ini
;php_iconv.dll去掉分号
解决方案 »
- insert into 23lian_article插入语句问题
- 求助php,对特定网页进行在线编辑(急急急)
- 请问在哪下载delphi for php这个工具呀
- 2003下PHP的SESSION失效,权限设置?
- 一个困绕我多天的函数?希望在CSDN上得到解决!
- url的映射及处理问题
- php图片管理
- 有谁用PHP做过类似于alibaba的网站,高手能否代码共享一下
- SESSION变量为多少个最好?如果我一下子注册50个是不是太过分了?
- 问下svn的常识问题
- php5怎么错误信息不显示了?一些比如少分号 ; 等语法错误信息都不显示了,php.ini已经error_reporting(E_ALL ^ E_NOTICE);,在脚本页面中设
- 为什么我的PHP得不到结果? 初次接触PHP, 困惑中
跟php版本有关,php5以上就默认加载php_iconv.dll了
怎么还没有解答啊 我快疯了,
今天一天了还没有解决,哪怕是个小例子让我看看效果啊 .,.我们头也没有具体告诉我是什么样的形式我也没见过,希望有人来解答快点,快下班了
可是不是很明白希望有高人帮忙啊!
贴出来拉
<?PHP
//对照表的使用
$filename = "gb2312.txt";
$fp = fopen($filename,"r");
while(! feof($fp)) {
list($gb,$utf8) = fgetcsv($fp,10); $charset[$gb] = $utf8;
}
//以上读取对照表到数组备用 /** gb2312到utf-8 **/
function gb2utf8($text, &$charset) {
//提取文本中的成分,汉字为一个元素,连续的非汉字为一个元素
preg_match_all("/(?:[\x80-\xff].)|[\x01-\x7f]+/",$text,$tmp);
$tmp = $tmp[0];
//分离出汉字
$ar = array_intersect($tmp, array_keys($charset));
//替换汉字编码
foreach($ar as $k=>$v)
$tmp[$k] = $charset[$v];
//返回换码后的串
return join('',$tmp);
} /** utf-8到gb2312 **/
function utf82gb($text, &$charset) {
$p = "/[xf0-xf7][x80-xbf]{3}|[xe0-xef][x80-xbf]{2}|[xc2-xdf][x80-xbf]|[x01-x7f]+/";
preg_match_all($p,$text,$r);
$utf8= array_flip( $charset );
foreach($r[0] as $k=>$v)
if(isset($utf8[$v]))
$r[0][$k] = $utf8[$v];
return join('',$r[0]);
} //测试
$s = gb2utf8('这是对照表的测试', $charset);
echo utf82gb($s, $charset);?>
1.关于这个例子的问题:出错提示:
Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! in C:\Apache\www\q.php on line 302.$filename = "gb2312.txt"; gb2312.txt";我在网上找的一个gb-unicode.txt 代替.
第30 行 :$utf8 = array_flip($charset); 难道这个FLIP()函数用的不对吗? 我不明白,谢谢
错误Can only flip STRING and INTEGER values
的意思是array_flip() 只能翻转字符串和数字
而在你的字典中存在了数组,而数组是不能做关联键的
2、你说“gb2312.txt 是我在网上找的一个gb-unicode.txt 代替.”的,这是不行的
这个gb2312.txt的内容是这样的
gbk汉字,utf8汉字
每行都是这样
3、这个文件是可以自己构造的,你在可以使用iconv函数的机器上执行如下代码就可以了
<?php
$fp = fopen('gb2312.txt', 'w');
for($i=0x81; $i<0xff; $i++) {
$l = chr($i);
for($j=0x40; $j<0xff; $j++) {
$h = chr($j);
$s = iconv('gbk', 'utf-8', $l.$h);
if(! empty($s)) {
fwrite($fp, "$l$h,$s\n");
}
}
}
fclose($fp);
?>