1、ereg里面是不需要也不能使用分隔符和修饰符的,所以ereg的功能比preg要弱上不少。
2、关于".":点在正则里面一般是除了换行符以外的全部字符,但是在ereg里面的"."是任意字符,即包括换行符!如果在preg里面希望"." 能够包括换行符,可以在修饰符中加上"s"。
3、ereg默认使用贪婪模式,并且不能修改,这个给很多替换和匹配带来麻烦。
4、速度:这个或许是很多人关心的问题,会不会preg功能强大是以速度来换取的?不用担心,preg的速度要远远比ereg快,笔者做了一个程序测 试:
echo "Preg_replace used time:" ;
$start = time ();
for( $i = 1 ; $i <= 100000 ; $i ++) {
$str = "ssssssssssssssssssssssssssss" ;
preg_replace ( "/s/" , "" , $str );
}
$ended = time ()- $start ;
echo $ended ;
echo "ereg_replace used time:" ;
$start = time ();
for( $i = 1 ; $i <= 100000 ; $i ++) {
$str = "ssssssssssssssssssssssssssss" ;
ereg_replace ( "s" , "" , $str );
}
$ended = time ()- $start ;
echo $ended ;
echo "str_replace used time:" ;
$start = time ();
for( $i = 1 ; $i <= 100000 ; $i ++) {
$str = "sssssssssssssssssssssssssssss" ;
str_replace ( "s" , "" , $str );
}
$ended = time ()- $start ;
echo $ended ;
?>
结果:
Preg_replace used time:5
ereg_replace used time:15
str_replace used time:2
str_replace因为不需要匹配所以速度非常快,而preg_replace的速度比ereg_replace要快上不少。
关于PHP3.0对于preg的支持
在PHP 4.0中默认加入了preg支持,但是在3.0中确没有。如果在3.0中希望使用preg函数,必须加载php3_pcre.dll文件,只要在 php.ini的extension部分设置加入"extension = php3_pcre.dll"然后从新启动PHP就可以了!