参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)
代码:
<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName = 'test'; $user = 'root'; $pass = 'root'; $dsn = "$dbms:host=$host;dbname=$dbName"; try { //初始化PDO $dbh = new PDO($dsn, $user, $pass); } catch (PDOException $e) { //获取异常字符串 $message = $e->getMessage(); //输出下异常字符串.正常输出(SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。) echo $message; //检查字符串的编码.输出EUC-CN.即GB2312 echo mb_detect_encoding($message, ["ASCII", "GB2312", "GBK", "UTF-8"]) . PHP_EOL; //打印下Json类型竟然是false $data = json_encode([ 'message' => $message ]); var_dump($data); }
上面的代码中由于数据库配置错误,一定会抛异常,异常信息是SQLSTATE[HY000] [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
本身是想把错误通过json发送给前端,但是前端总是收不到任何内容,原来是因为pdo内部抛出的异常中携带gb2312编码的中文原因,输出前转换下编码即可
<?php echo similar_text("Hello World","Hello Shanghai"); ?> 2.计算两个字符串的相似度,并返回百分比 <?php similar_text("...
为了实现注册机才写的教程,为了批量注册一个网站,注册带有验证码,幸好是文本验证码,但是有session验证,于是POST必须携带cookie。代码如下。<?php class AutoCurl{ ...
在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型.和其他语言有点差距.(1).在值类型中我们直接使用&符号表示指向对应变量的内存地址,当前变量和被指向的变量只要有1个的值被修改都会直接影响另外一个变量的值发生变化。(ps:还是非常节省内存的,可以使用...
首先看看以下代码:代码1:<?php $a=0.1; $b=0.7; if($a+$b==0.8) { echo "1"; } else{ echo "2"; } ?>代码2:<?php &n...
项目中使用服务来执行webservice,由于对方系统api不稳定,经常导致服务崩溃,只能重启,一个月差不多要重启一次。初期的解决办法是捕获异常,然后continue掉。<?php try { $url = 'http...
PHP不像net支持多继承,自身只支持单继承,为了解决这个问题,php出了Trait这个特性,减少单继承语言的限制。并且能让代码复用率更高。说白了就是一个对象的属性和方法扩展工具一样。例如:trait exts { public f...