在php中全角空格如何替换掉 这里我知道用str_replace函数,在网上查过之后也尝试了一下,但是发现都没有用,比如: 两个半角空格表示全角空格去替换; 直接在代码里面输全角空格去替换; 什么所谓的'\s';以上的三种方法都不管用,只好求救了。PS:处理的文件编码是utf8 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 xuzuning 于 2011-07-27 10:16:17 编辑 在txt里面,我用全角空格去查找是可以找的到的,下面的原文:insert into `smm_news_rekeyword` (`news_id`,`test`,`news_keyword_name`,`disable`,`renew_date`) values ('82181','86245','钴进口 ','0','0'); 但你帖出来的数据是 gbk 编码的呀 我的文件是有中文的,但是已经转换成utf8的,txt文档另存为转换的啊,utf8也可以有中文的哦 '钴进口 '你贴出的这个的确是 gbk 编码的,你用 utf-8 的全角空去匹配他当然是匹配不到的你若是怀疑这一点,请贴出 base64_encode 编码后的结果 我在数据库里查询了一下,发现无论后面有没有全角空格,ascii的值都是238,这该怎么解释呢? echo base64_encode('你查询到的怀疑有空格的串');帖出结果只有在共同的基础上才有可能讨论,胡乱的猜测总是不行的! 以下是我实验的结果:$x = base64_encode('钴进口 ');$y = base64_encode('钴进口');$z = base64_encode(' 钴进口 ');$w = base64_encode(' 钴进口');echo $x;echo "\n\r";echo $y;echo "\n\r";echo $z;echo "\n\r";echo $w;得到的结果:7ty9+L/aoaE=7ty9+L/aoaHu3L34v9qhoQ==oaHu3L34v9o= 本帖最后由 xuzuning 于 2011-07-27 17:28:22 编辑 还有我确定是全角空格,因为我转换成ANSI格式的时候使用$name = preg_replace("/[\s| ]+/","",$name);做替换就是可以的,但是这样后面的全角空格是去掉了,但是文件全变乱码了 这个是我读取文件里的内容显示的:“二氧化铈 ”,“同轴电缆 lan ”,“卷筒电缆 ”,“ 铅黄铜”,“梯级式电缆桥架 ”以下是base64_encode的数值:77u/5LqM5rCn5YyW6ZOI44CA5ZCM6L2055S157yGIGxhbuOAgA==5Y23562S55S157yG44CA44CA44CA6ZOF6buE6ZOc5qKv57qn5byP55S157yG5qGl5p6244CA44CA $name = preg_replace("/[\s| ]+/","",$name);????不能这样写的,[] 中的是单字节字符,你把全角空放在里面当然是不行的。他就相当于把中文内码还有 a1 的部分都删掉了。比如 啊 的内码是 b0a1 把后边去掉到然要乱码了要写作$name = preg_replace("/\s| /","",$name); 我解编码了一下,发现:[二氧化铈 ] : efbbbfe4ba8ce6b0a7e58c96e99388e38080[同轴电缆 lan ] : e5908ce8bdb4e794b5e7bc86206c616ee38080[卷筒电缆 ] : e58db7e7ad92e794b5e7bc86e38080e38080[ 铅黄铜] : e38080e99385e9bb84e9939c[梯级式电缆桥架 ] : e6a2afe7baa7e5bc8fe794b5e7bc86e6a1a5e69eb6e38080e38080那就是说全角空格的编码是:e38080 这就对了, 这次给出的是 utf-8 编码的数据了内码 e38080 就是 utf-8 编码的全角空个的内码了要想替换掉他,自然是在 utf-8 编码的文件中书写代码了,键入全角空就不会错了如果一定要在 非utf-8编码的编辑器里写代码,那么这个全角空要写作$space = iconv('gbk', 'utf-8', "\xa1\xa1");然后把变量 $space 带入到需要的地方当然也可这样写$space = "\xe3\x80\x80"; 按你说的,问题圆满解决: $space = "\xe3\x80\x80";$name = str_ireplace($space,"",$name);thanks 3q 导出Execl 报错,麻烦高手 救救我,分数多多,谢谢 PHP如何正则表达式提取字串 mysql 数据库想要两张表关联,语句怎么写? 求前辈们介绍个好用的PHP产品库程序 关于php导入excel文件到mysql数据库的问题 Drupal中用cck怎么创建出像下面网站的样子 求开源商城!来者有分! 对Discuz7.2熟悉的进来看下 AJAX PHP 循环之后点击状态更换图片 无限级循环,如何当满足条件时跳出最外层循环 【求一套VPN 用户管理系统】 有没人用过zen cart 做2次开发的
insert into `smm_news_rekeyword` (`news_id`,`test`,`news_keyword_name`,`disable`,`renew_date`) values ('82181','86245','钴进口 ','0','0');
你贴出的这个的确是 gbk 编码的,你用 utf-8 的全角空去匹配他当然是匹配不到的你若是怀疑这一点,请贴出 base64_encode 编码后的结果
帖出结果只有在共同的基础上才有可能讨论,胡乱的猜测总是不行的!
$x = base64_encode('钴进口 ');
$y = base64_encode('钴进口');
$z = base64_encode(' 钴进口 ');
$w = base64_encode(' 钴进口');
echo $x;
echo "\n\r";
echo $y;
echo "\n\r";
echo $z;
echo "\n\r";
echo $w;
得到的结果:
7ty9+L/aoaE=7ty9+L/aoaHu3L34v9qhoQ==oaHu3L34v9o=
“二氧化铈 ”,“同轴电缆 lan ”,“卷筒电缆 ”,“ 铅黄铜”,“梯级式电缆桥架 ”
以下是base64_encode的数值:
77u/5LqM5rCn5YyW6ZOI44CA5ZCM6L2055S157yGIGxhbuOAgA==5Y23562S55S157yG44CA44CA44CA6ZOF6buE6ZOc5qKv57qn5byP55S157yG5qGl5p6244CA44CA
????
不能这样写的,[] 中的是单字节字符,你把全角空放在里面当然是不行的。
他就相当于把中文内码还有 a1 的部分都删掉了。比如 啊 的内码是 b0a1 把后边去掉到然要乱码了
要写作
$name = preg_replace("/\s| /","",$name);
[二氧化铈 ] : efbbbfe4ba8ce6b0a7e58c96e99388e38080
[同轴电缆 lan ] : e5908ce8bdb4e794b5e7bc86206c616ee38080
[卷筒电缆 ] : e58db7e7ad92e794b5e7bc86e38080e38080
[ 铅黄铜] : e38080e99385e9bb84e9939c
[梯级式电缆桥架 ] : e6a2afe7baa7e5bc8fe794b5e7bc86e6a1a5e69eb6e38080e38080
那就是说全角空格的编码是:e38080
内码 e38080 就是 utf-8 编码的全角空个的内码了
要想替换掉他,自然是在 utf-8 编码的文件中书写代码了,键入全角空就不会错了如果一定要在 非utf-8编码的编辑器里写代码,那么这个全角空要写作
$space = iconv('gbk', 'utf-8', "\xa1\xa1");
然后把变量 $space 带入到需要的地方
当然也可这样写
$space = "\xe3\x80\x80";
$space = "\xe3\x80\x80";
$name = str_ireplace($space,"",$name);thanks 3q