如何利用正则表达式过滤html代码?
如何利用正则表达式过滤html代码?
http://www.tin.org/bin/man.cgi?section=7&topic=regex
<?
//href替换
functionAHREF2text($string){
returneregi_replace('<A.*HREF=("|')?([^"']*)("|')?.*>([^<]*)</A>','[/4](link:/2)',$string);
}
$str='Alinkto<ahref="http://www.php.net">PHP.net</A>';
$str=AHREF2text($str);
//Alinkto[PHP.net](link:http://www.php.net)
//url提取
$str='Alinkto<ahref="http://www.php.net">PHP.net</A>';
$str='Alinkto<ahref="<ahref="http://www.php.net">http://www.php.net</a>">PHP.net</A>';
$str=ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<ahref="/0">/0</a>",$str);
//Alinkto<ahref="<ahref="http://www.php.net">http://www.php.net</a>">PHP.net</A>
//汉字截取组合,仍为汉字
$str="我们";
$str=substr($str,0,1).substr($str,1,1);
//空格[:space:],具体看php.net的POSIXregex
$str="abc";
$str=ereg_replace("[[:space:]]",'z',$str);
//对正则表达式结果的应用,/0~9,0代表整个表达式
$str='<FONTcolor=#ff0000>fjl</FONT><IMGsrc="/bx9/bs_edit/adveditor/images/smiley/msn/wink_smile.gif"border=0></FONT>';
$str=ereg_replace("<IMG[^<>]*src="([^[:space:]"]*)"[^<>]*>","/1",$str);
if(FALSE==strip_tags($str))
{
returnFALSE;
}
echohtmlspecialchars($str);
?>
//href替换
functionAHREF2text($string){
returneregi_replace('<A.*HREF=("|')?([^"']*)("|')?.*>([^<]*)</A>','[/4](link:/2)',$string);
}
$str='Alinkto<ahref="http://www.php.net">PHP.net</A>';
$str=AHREF2text($str);
//Alinkto[PHP.net](link:http://www.php.net)
//url提取
$str='Alinkto<ahref="http://www.php.net">PHP.net</A>';
$str='Alinkto<ahref="<ahref="http://www.php.net">http://www.php.net</a>">PHP.net</A>';
$str=ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<ahref="/0">/0</a>",$str);
//Alinkto<ahref="<ahref="http://www.php.net">http://www.php.net</a>">PHP.net</A>
//汉字截取组合,仍为汉字
$str="我们";
$str=substr($str,0,1).substr($str,1,1);
//空格[:space:],具体看php.net的POSIXregex
$str="abc";
$str=ereg_replace("[[:space:]]",'z',$str);
//对正则表达式结果的应用,/0~9,0代表整个表达式
$str='<FONTcolor=#ff0000>fjl</FONT><IMGsrc="/bx9/bs_edit/adveditor/images/smiley/msn/wink_smile.gif"border=0></FONT>';
$str=ereg_replace("<IMG[^<>]*src="([^[:space:]"]*)"[^<>]*>","/1",$str);
if(FALSE==strip_tags($str))
{
returnFALSE;
}
echohtmlspecialchars($str);
?>