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¬humb=yes
aid是个什么呢?很可能是个与session有关的东东,变一变也很正常的嘛。后来抓看起来像静态路径的东东就没问题了。
以上三个故事中包含两个悲剧,这就是PHP初学者必犯的低级错误。
使用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¬humb=yes
aid是个什么呢?很可能是个与session有关的东东,变一变也很正常的嘛。后来抓看起来像静态路径的东东就没问题了。
以上三个故事中包含两个悲剧,这就是PHP初学者必犯的低级错误。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月25日
2024年11月25日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]