解决方法:
1.修改本地php.ini配置,以Win下的php.ini为例,找到
;extension=php_pdo_mysql.dll
;extension=php_pdo.dll
去除前面的分号“;”
2.重启apache服务即可。
可能碰到问题
建立Apache + Php + mysql + Zend 环境结果遇到一个问题,使用 pdo_mysql.dll 会报错 IE 就会出错 ,原来只要将 libmysql.dll 拷贝到 apache 目录下就可以了
将下载下来的php-5.2-win32-VC6-x86-latest.zip 解压取出其中中的libmysql.dll 扩展库拷贝到 xamppapachebin 和xamppphp目录下去覆盖原文件 重启 apache
当用php_pdo_mysql.dll扩展库链接数据库,发现IE页面突然出错自动关闭
点击调试 出现信息如下
szAppVer : 2.2.11.0 szModName : php_pdo_mysql.dll
szModVer : 5.2.8.8 offset : 0000250a
--with-mm 出现问题 configure: error: cannot find mm library ,将mm装在非 /usr下能够解决
今天小编来给大家介绍一个关于PHP strtotime计算上一个月的今天问题解决,如果你碰到计算上一个月今天有问题不防进入参考。PHP,上一个月
strtotime 有个小问题
代码如下 | 复制代码 |
> php -r”echo date(‘Ymd000000′,strtotime ( ‘-1 month’, strtotime ( ’201307310000′ ) ));” |
搜了一下,下面的方法更准确一些
代码如下 | 复制代码 |
$time = strtotime("2011-03-31"); |
函数 mktime,它可以取得日期的时间戳:
int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。
参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。
所以可以通过它来计算
代码如下 | 复制代码 |
function last_month_day($time){ |
输出的结果是2012-03-02;按理说应该是输出2012-02-31????笨蛋2月有31号吗?没,有30号吗,没?有29号吗?..这个..可以有…
PHP给我们处理了这种情况,他会多出几天按下个月来算.
2012年2月最后一天是2012-02-29那么31号比29多两天,所以PHP就累加到下个月来处理 就是2012-03-02啦.
差点忘了..那么星期几怎么算呢??不用算啦..PHP给我们准备好了.
date(‘w’,$strtime);输出的就是一周中的第几天.就是星期几了.
例
代码如下 | 复制代码 |
/** if ($last_month_t < date("j", $time)) { return date(date("Y-m", $last_month_time) . "-d", $time); echo last_month_today($time); |
在 php 数组转xml我们在php中学会这样来写
代码如下 | 复制代码 |
|
当内容出现汉字时会出现为空的情况
解决办法是转编码处理
代码如下 | 复制代码 |
|
后面给大家另一些关于汉字正则实例
1.判断字符串是否全是汉字
代码如下 | 复制代码 |
<?php |
当$str = '全部是汉字测试'; 时输出"全部是汉字";
当$str = 'all全部是汉字测试'; 时输出"不全是汉字";
在windows其它版本中
代码如下 | 复制代码 |
# Open the File. |
这个代码没有任何问题,然后我放到了linux中发现有为空的字段了。
问题解析出来的数据不完整,有为空的字段
网上查了下说是在php5.2.8 中存在bug
解决办法是使用自定义函数
代码如下 | 复制代码 |
function __fgetcsv(& $handle, $length = null, $d = ',', $e = '"') { |
文章页面的 description 是使用 substr 函数来截取220字符的,但是最后一个汉字总是乱码,而且截取出来的长度也不正确。
通过神奇的 Google 找到方法,可能是因为 substr(string,start,length),会将汉字以字符的形式截断,而造成乱码
解决方案:
使用 PHP 扩展库中的 mb_substr 方法。
注意
1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面。
2.在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到
;extension=php_mbstring.dll把前面的;号去掉,这样mb_substr函数就可以生效了
方法定义:
string mb_substr ( string str, int start [, int length [, string encoding]] )
注意:在使用 mb_substr()/mb_strcut 最后要加入多一个参数,以设定字符串的编码,
例如:
代码如下 | 复制代码 |
echo mb_substr(‘原本会出现乱码的汉字!’, 0, 7, ‘utf-8′); |
再如:
代码如下 | 复制代码 |
$description = mb_substr(strip_tags($post->post_content),0,220,’utf-8′); |
mb_strcut函数
mb_strcut函数功能也可以截取字符串长度,下面实例具体看看区别在哪:
代码如下 | 复制代码 |
<?php echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8'); echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); |
从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。
substr()函数中文版 普通的substr()函数可以取得字符串的指定长度子字符串,但遇到中文时可能会在新字符串末尾产生乱码,下面这个函数将超过$len长度的字符串转换成以“...”结尾,并且去除了乱码。
用法:$new = getsubstring($old,20);
代码如下 | 复制代码 |
function getsubstring($str,$len) { for($i = 0;$i <$len;$i++) { if ($i >=0 AND $i <$len) { if(ord(substr($str,$i,1)) > 0xa1) $result_str.=substr($str,$i,2); else $result_str.=substr($str,$i,1); } if(ord(substr($str,$i,1)) > 0xa1) $i++; } if(strlen($str)<=$len) return $result_str; else return $result_str."..."; } |