php 处理html时,字符串截断
程序员文章站
2024-04-06 12:07:55
...
stream=fopen("xxx.html");var str = '';while(!feof(stream){ size+=1024; str.=fread(stream,size);}....
str只能获取1024个字节,后面的都比截断了,但是fread确实读取到了,是不是用.=出了问题,还是html里面有特殊字符导致截断?
谢谢大神
回复讨论(解决方案)
$stream=fopen("test.txt","a+");$str = '';$size=1024;while(!feof($stream)){ $str.=fread($stream,$size);}fclose($stream);echo $str;
$stream=fopen("test.txt","a+");$str = '';$size=1024;while(!feof($stream)){ $str.=fread($stream,$size);}fclose($stream);echo $str;
我读取的是html,跟读取模式应该没关系,有的页面可以抓取,有的页面抓取被截断,怀疑某个html标签的问题?谢谢
就你上面的代码而言,都不能运行,可能是你写错吧
至于你说的html的某个特殊字符,应该是不存在的
而且你只是读取一个html,数据不大,建议用file_get_contents(),性能比fread好
你那又不是 php 代码
就你上面的代码而言,都不能运行,可能是你写错吧
至于你说的html的某个特殊字符,应该是不存在的
而且你只是读取一个html,数据不大,建议用file_get_contents(),性能比fread好
恩,我乱写的,大概意思,刚开始改cms,php入门级。
您写的很对,但是我确实遇到问题了,调试的时候,每次while里面的fread都能读到数据,但是,加到字符串str里面后,str的长度变了,但是内容每增加,难道是调试的问题,调试的时候只能只能显示变量一部分?我改过xdebug的显示最大长度,没有效果,我用的vs.php调试的,怎么搞能显示全部。怎么搞能看到到底str存了多少,只见其长度增加,没见到内容变化
你用
$stream=fopen("test.html","r");$str = '';$size=1024;while(!feof($stream)){ $tmp=fread($stream,$size); file_put_contents('d:/log.log',$tmp.PHP_EOL,FILE_APPEND); $str.=$tmp; $tmp='';}fclose($stream);echo $str;
运行程序,再打开log.log查看,每一行是每次while循环读取的数据
您那是什么代码?C么?
你用
$stream=fopen("test.html","r");$str = '';$size=1024;while(!feof($stream)){ $tmp=fread($stream,$size); file_put_contents('d:/log.log',$tmp.PHP_EOL,FILE_APPEND); $str.=$tmp; $tmp='';}fclose($stream);echo $str;
运行程序,再打开log.log查看,每一行是每次while循环读取的数据
好的,我试试,好人啊,