windows版宝塔,提示:开启失败,请先卸载当前系统存在的PHP环境。
这是因为在windows系统环境变量中存在PHP。
解决办法:
打开windows系统环境变量,查找带有php安装目录的变量,删除即可。
windows版宝塔,提示:开启失败,请先卸载当前系统存在的PHP环境。
这是因为在windows系统环境变量中存在PHP。
解决办法:
打开windows系统环境变量,查找带有php安装目录的变量,删除即可。
PHP时间戳和日期相互转换实例,时间转换,日期转换,日期转时间戳,时间戳转日期,年月日带时间,日期时间
在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳可以使用strtotime()函数实现,下面我来给大家举例说明。
1. php中时间转换函数
0 1 2 |
strtotime(date("Y-m-d H:i")) date("Y-m-d H:i",$unixtime) |
这是一个PHP语言修改图片MD5值的思路,只有客户问过这个问题,之后在网上查的。
0 1 2 3 4 5 6 7 8 9 10 11 |
$img_path_old = dirname(__FILE__)."/asd.jpg"; $img_link = "http://localhost/asd.jpg"; $img_path_new = dirname(__FILE__)."/asd_new.jpg"; // $md5 = md5_file($img_path); // echo $md5;//9c4e8a26ae0a91872fc7b533ee6b5168 // $img_data = curl_get_visit_img($img_link); // $fp2=@fopen($img_path_new,'a'); // fwrite($fp2,$img_data); // fclose($fp2); $md5 = md5_file($img_path_new); echo $md5; //f3ad3dfb84d4bbda54897e7801682be5 |
我感觉应该还有别的思路,比如修改图片,为某个点加个1像素的水印,之后MD5值一定就会变了的。
json_decode要求的字符串比较严格
1. 使用UTF-8编码
2. 不能在最后元素有逗号
3. 不能使用单引号
4. 不能有\r,\t,如果有请替换
解决方案 Continue reading
二进制转换,PHP字符串(含中文)转二进制串代码
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function StrToBin($str){ $arr = preg_split('/(?<!^)(?!$)/u', $str); foreach($arr as &$v){ $temp = unpack('H*', $v); $v = base_convert($temp[1], 16, 2); while($v<8)$v='0'.$v; unset($temp); } return join(' ',$arr); } function BinToStr($str){ $arr = explode(' ', $str); foreach($arr as &$v){ $v = pack("H".strlen(base_convert($v, 2, 16)), base_convert($v, 2, 16)); } return join('', $arr); } echo StrToBin("织梦先生"); echo '<br>'; echo BinToStr('111001101001110010001001 111001001011100010000000 111010011010001010010111 111001111000100110011011 111010011000000010111100 111001111001101010000100 111001011011111110000011 111011111011110010001100 111001001011110110100000 111001011011000010110001 111001011000111110101111 111001001011101110100101 111001111000100110011011 111010011000000010111100 111001001011101010001110 111001011010010010101001 111001001011100010001011 111011111011110010000001'); |
代码解释: Continue reading
使用QueryList采集时报错提示cURL error 56: Recv failure: Connection was reset (see http://curl.haxx.se/libcurl/c/libcurl-errors.html),QueryList报错,QL报错
被采集的网站HTTP协议是可以http访问也可以https访问,但是我采集地址是以http开头的,后来改为https,就正常了。
curl采集设置CURLOPT_FOLLOWLOCATION不起作用的解决办法
curl抓取页面时,如果页面会发生301,302跳转,则需要对curl进行参数设置。
0 1 |
curl_setopt($ch, CURLOPT_MAXREDIRS,20); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); |
CURLOPT_FOLLOWLOCATION即表示自动进行跳转抓取,CURLOPT_MAXREDIRS表示最多允许跳转多少次。
不过在使用时需要注意:CURLOPT_FOLLOWLOCATION需要在安全模式关闭未设置open_basedir的情况下才能使用。open_basedir是php.ini中的一项设置,功能是将用户可操作的文件限制在某目录下。
如果开户了安全模式,或者设置了open_basedir,则无法使用自动跳转抓取,此时可以采用连续抓取的办法来抓取最终页面。为加快速度和减少不必要的开销,可以在中间非目标页面的抓取过程中使用: Continue reading
HTML字符集是CP936转UTF-8,GB2312转UTF-8,GBK转UTF-8,PHP采集HTML后中文乱码,转换编码为UTF-8的方法
这个任务最初是使用QueryList插件来采集分析页面的,但是后来发现采集入库的数据中有乱码,查看分析了一下,全部是源页面字符集为非utf-8的页面,那么就利用QueryList自有的方法来转码。
0 1 2 3 4 5 |
$result = $ql->get('http://'.$url, null, $options) ->rules($rules) ->encoding('UTF-8','GB2312') ->removeHead() ->query() ->getData(); |
QueryList官方文档 中介绍,使用encoding('UTF-8','GB2312')
方法可以解决,但是实际情况是页面字符集多种多样,刚才测试了三个网站三种编码,CP936,EUC-CN,GBK,真是玩死朕了。那么官方还说如果还是不能解决乱码问题就把removeHead()函数也挂上,没挂之前我感觉它应该是不好使,那也要试一下才能真正的确定啊,试了一下,结果确实还是乱码。
QueryList有时有点诡异,采集时有时会缺内容,不知所以然。 Continue reading
做织梦系统的MIP开发改造时,需要实现获取当前列表页和内容页的链接,在网上找了一会,看有没有成品代码可抄,找来找去,都是不如意的,还有一些也实现不了。
花一会功夫,还是自己写一个吧,找代码比写代码用时还长呢。
把代码加到 /include/helpers/extend.helper.php
文件最后。
经实际应用的项目是全站静态页面的环境,其它环境(如果动态页面,或者是伪静态页面)未测试,使用时请注意观察。如果有问题需要帮助的话,可以联系我。 Continue reading