fgetss的BUG及纠正
程序员文章站
2022-03-25 15:37:49
...
/*
作者:朱江 zhu_jiang@263.net
毕业于北京工业大学
工作嘛,呵呵,不说也罢,那是一个并不让我引以为荣的地方
php4.X的系统所提供的fgetss()功能不完善,不能滤干净HTML TAG,分析
其中忽略了某些情况,以下代码是本人在开发过程中自制的土炮。
关于fgetss的BUG,可用如下代码研究一下:
$fp=fopen("index.html","r");
while (! feof($fp))
{
$ms=fgetss($fp);
printf($ms);
}
fclose($fp);
版杈 :免费
*/
function mygets($myFile)
{
//while(!feof($myFile))
//{
$myline = fgets($myFile, 255);
$big=strlen(strstr($myline,">"));
$small=strlen(strstr($myline,"if($big>$small) //此句很重要,如果HTML代码中间有换行时有用
{ //如果一行中首先出现的是>而不是$myline=strstr($myline,">");
$myline=substr($myline,1);
}
$len=strlen($myline);
$startskip=false;
$outstring=""; //important!
for($i=1;$i{
$a=substr($myline,$i-1,1);
switch($a)
{
case "$startskip=true;
//$myline=substr($myline,">");
//$myline=strstr($myline,1);
break;
case ">":
//$myline=substr($myline,1);
$startskip=false;
break;
default:
}
if(!$startskip && $a!=">") $outstring=$outstring.$a;
}
$outstring=str_replace(" "," ",$outstring);
//当然,以&开头的东东如果不想要可以再加,如法炮制,这里只是过滤
$outstring=str_replace(" ","",$outstring);
$outstring=str_replace(" ","",$outstring); //双引号内为全角空格
$outstring=str_replace(" ","",$outstring);
return $outstring;
//}
} ?>
作者:朱江 zhu_jiang@263.net
毕业于北京工业大学
工作嘛,呵呵,不说也罢,那是一个并不让我引以为荣的地方
php4.X的系统所提供的fgetss()功能不完善,不能滤干净HTML TAG,分析
其中忽略了某些情况,以下代码是本人在开发过程中自制的土炮。
关于fgetss的BUG,可用如下代码研究一下:
$fp=fopen("index.html","r");
while (! feof($fp))
{
$ms=fgetss($fp);
printf($ms);
}
fclose($fp);
版杈 :免费
*/
function mygets($myFile)
{
//while(!feof($myFile))
//{
$myline = fgets($myFile, 255);
$big=strlen(strstr($myline,">"));
$small=strlen(strstr($myline,"if($big>$small) //此句很重要,如果HTML代码中间有换行时有用
{ //如果一行中首先出现的是>而不是$myline=strstr($myline,">");
$myline=substr($myline,1);
}
$len=strlen($myline);
$startskip=false;
$outstring=""; //important!
for($i=1;$i{
$a=substr($myline,$i-1,1);
switch($a)
{
case "$startskip=true;
//$myline=substr($myline,">");
//$myline=strstr($myline,1);
break;
case ">":
//$myline=substr($myline,1);
$startskip=false;
break;
default:
}
if(!$startskip && $a!=">") $outstring=$outstring.$a;
}
$outstring=str_replace(" "," ",$outstring);
//当然,以&开头的东东如果不想要可以再加,如法炮制,这里只是过滤
$outstring=str_replace(" ","",$outstring);
$outstring=str_replace(" ","",$outstring); //双引号内为全角空格
$outstring=str_replace(" ","",$outstring);
return $outstring;
//}
} ?>
上一篇: PHP的垃圾回收机制是怎样的?
下一篇: nginx 超时
推荐阅读
-
JavaScript中offsetWidth的bug及解决方法
-
Codeigniter框架的更新事务(transaction)BUG及解决方法
-
[日常] PHP库函数fgetss的BUG
-
【Bug流水账】安装Gulp中出现Gulp-cli安装失败的问题及解决方法
-
Java IO及BufferedReader.readline()出现的Bug
-
IDEA使用mybatis-generator及配上mysql8.0.3版本遇到的bug
-
JavaScript中offsetWidth的bug及解决方法
-
Unity上线google商店 用IL2Cpp打包64位版本和Android APP Bundle优化 及产生的bug
-
php APC 造成的session无法保存bug及解决办法
-
TP+ORACLE插入数据BUG修复及支持获取自增Id的上次记录