调试一段PHP程序时遇到的三个问题

 更新时间:2012年01月17日 23:38:03   作者:  
调试一段PHP程序时遇到的三个问题,学习php的朋友可以参考下。
1,filesize()函数返回错误的值。
使用curl将某个页面下载到本地时,需要将下载到的临时文件tmpHtml.txt的内容读取到一个缓冲区中。由于我使用fread()进行读取,需要传入要读取的大小,所以先用filesize(‘./tmpHtml.txt')获取临时文件大小。怪异的是,获取到的临时文件大小不正确,下断点调试,在filesize()调用后,手工去硬盘上寻找文件,文件大小与filesize()得到的结果不一样。
在php.net上搜索filesize,可以看到函数说明中有这么一句:Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。
再去查阅clearstatcache(),果然找到了原因:
PHP将缓存这些(提供了函数表供查询)函数的返回信息以提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,你需要清除文件状态缓存。这种情况下,可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。
2,在UTF-8编码的PHP脚本中,对GBK编码的中文网页内容做模式匹配时,如何匹配中文。
在昨天的开发中,需要匹配包含GBK编码字符串‘苹果'的内容,所以写出如下代码:
复制代码 代码如下:

$pat = '/<img onclick="zoom\(this, \'(attachments.*?)\'\)".*?alt="苹果\.jpg" \/><\/a>/';
$pat = iconv(‘UTF-8', ‘GB2312', $pat);
$ret = preg_match_all($pat, $contents, $matches);

可是死活匹配不上,于是尝试先将内容转换成UTF-8编码,如下:
复制代码 代码如下:

$pat = '/<img onclick="zoom\(this, \'(attachments.*?)\'\)".*?alt="苹果\.jpg" \/><\/a>/';
$contenst = iconv(‘GB2312', ‘UTF-8', $contents);
$ret = preg_match_all($pat, $contents, $matches);

于是就能匹配上了。但是想不通啊,怀疑这里面有诈。
但悲剧的是,今天又用了第一种方法,又匹配中了。看来问题出在别的地方。
啊!老夫是猪,问题2是由问题1引起的!filesize()获取的不对,自然匹配不上了!第二种方法匹配上,是在解决问题1之后啊!

3,浏览器中审查元素得到的报价图片下载地址,为何与curl得到的下载地址不同。
可能……最后答案依然是:我是猪。
因为URI对象为:attachment.php?aid=Mzk3MTB8YTg5ZTYyNTJ8MTMyNjcyNDEwMXw5NWYydC9aOUE0a05EVm9ydlErSFBRamZJNWJQL1NHdWJLK3ZraU9GTDZYdnBUdw%3D%3D&nothumb=yes
aid是个什么呢?很可能是个与session有关的东东,变一变也很正常的嘛。后来抓看起来像静态路径的东东就没问题了。

以上三个故事中包含两个悲剧,这就是PHP初学者必犯的低级错误。

相关文章

  • PHP中substr_count()函数获取子字符串出现次数的方法

    PHP中substr_count()函数获取子字符串出现次数的方法

    这篇文章主要介绍了PHP中substr_count()函数获取子字符串出现次数的方法,结合实例分析了substr_count()函数的功能,参数作用及具体使用技巧,需要的朋友可以参考下
    2016-01-01
  • php实现图片以base64显示的方法

    php实现图片以base64显示的方法

    这篇文章主要介绍了php实现图片以base64显示的方法,较为详细的分析了base64编码格式显示图片的相关实现技巧与注意事项,需要的朋友可以参考下
    2016-10-10
  • php邮件发送,php发送邮件的类

    php邮件发送,php发送邮件的类

    php发送邮件,php发送邮件的类smtp.class.php
    2011-03-03
  • 非常有用的9个PHP代码片段

    非常有用的9个PHP代码片段

    这篇文章主要为大家介绍了非常有用的9个PHP代码片段,在开发网站、app或博客时,代码片段可以真正地为你节省时间,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • PHP 使用openssl 扩展实现公钥加密的方法

    PHP 使用openssl 扩展实现公钥加密的方法

    下面小编就为大家分享一篇PHP 使用openssl 扩展实现公钥加密的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • PHP实现的回溯算法示例

    PHP实现的回溯算法示例

    这篇文章主要介绍了PHP实现的回溯算法,结合具体实例形式分析了php回溯算法的实现步骤与使用方法,涉及字符串与数组的递归、遍历、运算等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • php之深入理解架构布局讲解

    php之深入理解架构布局讲解

    这篇文章主要介绍了php之深入理解架构布局讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • PHP中file_get_contents高級用法实例

    PHP中file_get_contents高級用法实例

    这篇文章主要介绍了PHP中file_get_contents高級用法,包括了超时限制及实现POST等用法,需要的朋友可以参考下
    2014-09-09
  • 实例讲解通过​PHP创建数据库

    实例讲解通过​PHP创建数据库

    在本篇文章里小编给大家分享了关于如何通过&#8203;PHP创建数据库的知识点内容,有需要的朋友们学习下。
    2019-01-01
  • PHP数据分析引擎计算余弦相似度算法示例

    PHP数据分析引擎计算余弦相似度算法示例

    这篇文章主要介绍了PHP数据分析引擎计算余弦相似度算法,结合具体实例形式分析了php计算余弦相似度的操作步骤与相关实现技巧,需要的朋友可以参考下
    2017-08-08

最新评论