浏览模式: 普通 | 列表
php在分割gbk编码格式的中文字符串时,容易出现乱码,应该如何解决这个问题呢?需要的朋友,参考下本文中的介绍吧。

类似如下的字符串(GBK), explode不能得到正确结果: $result = explode("|", "滕华弢|海青");

究其原因, 对于”弢”字(读tao,不认识没关系,我也不认识), 因为他的GBK编码值为: 8f7c, 不巧的是, “|”的ASCII值也是7c.

还有一些类似的问题: 因为GBK编码的编码范围是: 0×8140-0xfefe, 所以, 理论上来说, 任何低字节是7c的字都会有这个问题, 比如: 倈(827c), 億(837c), 眧(b17c), 鍇(e57c).......等等等等

对于这样的情况,
第一, 可以采用转码到utf8, 然后explode, 再转回来, 这是比较麻烦的方法.
第二, 我们可以采用正则拿"匹配出"来代替"分离出": preg_match_all("/([/x81-/xfe]...

阅读全文…
p.s. var_export() 可以看到生僻字输出带反斜杠\,平时网页输出看不出来。有一次入库生僻字及其后面乱码,增加一个反斜杠就正常了
$str = str_replace("\\","\\\\",$str);


工作中发现PHP处理GBK格式的生僻字 ‘碶’ 时会遇到的问题。没能深入研究编码层面的原因。不知道是PHP的bug还是GBK编码的锅。如果有大神发现这篇文章欢迎讨论
//1、直接把‘碶’赋值给变量

$str = '碶';

echo $str;//会报500错误

//2、如果‘碶’字后面随便接一个字符或者汉字则不会报错

$str = '碶大';

echo $str;//输出 碶大

//3、var_export查看结果

var_export($str);//输出 '碶\大'

$str = var_export($str, true);
...

阅读全文…
首先:我希望上传的文件根据日期来组织文件夹
请修改editor\editor\filemanager\connectors\php文件夹下的:config.php文件
找到如下的内容:
// Path to user files relative to the document root.
$Config['UserFilesPath'] =
修改为:
// Path to user files relative to the document root.
$Config['UserFilesPath'] = '/uploadfiles/'.date("Ym")."/" ;
这样上传的文件就按照日期存放了。


其次:重命名
请修改该文件夹下的io.php文件
找到: [code][/code]...

阅读全文…
<?php
$products = array("Electronics", "Accessories", "Shoes", "Toys", "Groceries");
$res = array_shift($products); //$res = ‘Electronics’ 注意返回的是删除的那个元素,而数组本身已经被改变
print_r($products);
?>

第一个值“ Electronics”被分配给“ $res”-

Array (
      [0] => Accessories
      [1] => Shoe
      [2] => Toys
      [3] => Groceries
)

解决php mb_substr函数中文乱码问题

[ 2022-08-20 14:51:08 | 作者: admin ]
PHP用substr截取字符串出现中文乱码问题用 mb_substr

实例:
mb_substr('截取中文乱码问题测试',0,5, 'utf-8');
$rest = substr ("中国人", 1, -1); // returns "fdsafsda" 就是乱码了


解决办法主要有两种:

一、使用mbstring扩展库的mb_substr()截取就不会出现乱码了。

可以用mb_substr()/mb_strcut()这个函数,mb_substr()/mb_strcut()的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,

但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。
echo mb_substr("php中文字符encode",0,4,"utf-8");
...

阅读全文…
p.s.其他centos服务器还没有遇到这个问题,或者说尚不清楚是否存在这个问题

原始字符串
<a href="mailto:666666@qq.com ">666666@qq.com</a>

正常json_encode()后
<a href=\"mailto:666666@qq.com \">666666@qq.com<\/a>

目前遇到的问题是 json_encode 后自动加了 ?PHPSESSID=AAAAAAAAAAA ,造成json字符串无法正常解析了
<a href=\?PHPSESSID=AAAAAAAAAAA"mailto:666666@qq.com \">666666@qq.com<\/a>


解决办法:
在php.ini中配置为
session.use_only_cookies = 1;
今天在做本地环境开发阿里云短信验证时报错:cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)



Windows版本
1.到 https://curl.haxx.se/ca/cacert.pem 下载证书文件 cacert.pem,将其保存到 PHP 安装路径下。

2.编辑 php.ini 文件,删除 curl.cainfo 配置项前的分号注释符(;),值设置为保存的证书文件 cacert.pem 的绝对路径。

3.重启依赖 PHP 的服务。
attachments/202204/27_170205_20210707171649391.png

...

阅读全文…
PHP 5.4.3 环境中测试了一个在 PHP 5.2 环境下运行正常的程序,却发现本应正常提交一个中文字符串到数据库的代码却提交了一个空字符串,经过排查,该字符串在经 htmlspecialchars 函数转义之前正常,而在转义之后却变成了空字符串。调用例子如下:
$str = '中文字符串';
$str_converted = htmlspecialchars($str);
echo $str_converted;

遂查看PHP手册,获知 htmlspecialchars 函数原型如下:
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
...

阅读全文…