打印

[php] 关于fgets的用法,帮看下下面代码是不有问题,因为执行过后总是输出错误

while   (!feof($fp))   {   
                    $shpw = nl2br(fgets($fp,   128));
                           
                                 if (ereg("$domain","$shpw")){     //说明:判断abcdef中是否含有字母c
                                           echo "通过";
                                   }else{
                                           echo "错误";
                                   }

                       }   
              fclose($fp);   
$domain是获取上一个页面的文本字段, $domain=$_REQUEST['domain'];
不要这样子使用了,建议使用preg_match来完成你的工作

原因:
1:preg_match比ereg更快,在PHP手册里关于ereg函数有段这样的说明:
引用:
注意: 使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。
2、Perl 兼容正则表达式提供了更多强大的函数,例如:preg_quote,对于你的$domain不使用preg_quote进行转义就进行正则匹配,是肯定会出错的,你可以这样做
复制内容到剪贴板
代码:
if (preg_match('/'.preg_quote($domain).'/', $shpw))
  echo '通过';
else
  echo '错误';