导读:php教程过滤所有html标签的几种方法 //用正则过滤html标签$html_body ="www.bcty365.com";preg_replace("/(</?)(w+)([^>]*>)/e","'...
php教程过滤所有html标签的几种方法
//用正则过滤html标签
$html_body ="www.bcty365.com";
preg_replace("/(</?)(w+)([^>]*>)/e",
"'\1'.strtoupper('\2').'\3'",
$html_body);
//用php教程自带函数strip_tags
echo strip_tags("hello world!_前端技术");
//用户自定义
function filterhtml($str) {
$str=eregi_replace("</*[^<>]*>", '', $str);
$str=str_replace(" ", '', $str);
$str=str_replace("n", '', $str);
$str=str_replace("t", '', $str);
$str=str_replace("::", ':', $str);
$str=str_replace(" ", '', $str);
//$str=str_replace(" ", '', $str);
return $str;
}
//其它可能对你有用的方法
1,过滤所有html标签的正则表达式:
</?[^>]+>
2,过滤所有html标签的属性的正则表达式:
$html = preg_replace("/<([a-za-z]+)[^>]*>/","<\1>",$html);
3,过滤部分html标签的正则表达式的排除式(比如排除
,即不过滤
):
</?[^pp/>]+>
4,过滤部分html标签的正则表达式的枚举式(比如需要过滤
等):
</?[aappbb][^>]*>
5,过滤部分html标签的属性的正则表达式的排除式(比如排除alt属性,即不过滤alt属性):
s(?!alt)[a-za-z]+=[^s]*
6,过滤部分html标签的属性的正则表达式的枚举式(比如alt属性):
(s)alt=[^s]*
$tmp = preg_replace('/[一-�]/u','<@>','你好我是谁?123abc');
/u是UTF-8
程序一:PHP截取UTF-8字符串,解决半字符问题
/******************************************************************
* PHP截取UTF-8字符串,解决半字符问题。
* 英文、数字(半角)为1字节(8位),中文(全角)为3字节
* @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串
* @param $str 源字符串
* $len 左边的子串的长度
function utf_substr($str,$len){
for($i=0;$i<$len;$i++){
$temp_str=substr($str,0,1);
if(ord($temp_str) > 127){
$i++;
if($i<$len){
$new_str[]=substr($str,0,3);
$str=substr($str,3);
}
}else{
$new_str[]=substr($str,0,1);
$str=substr($str,1);
}
}
return join($new_str);
}
例子一:
$str = utf_substr('你好',4);
echo $str;
程序二:截取utf-8字符串函数
function cut_str($sourcestr,$cutlength){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n<$cutlength) and ($i<=$str_length)){
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if ($ascnum>=224){ //如果ASCII位高与224,
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}elseif ($ascnum>=192){ //如果ASCII位高与192,
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}elseif ($ascnum>=65 && $ascnum<=90){ //如果是大写字母,
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}else{ //其他情况下,包括小写字母和半角标点符号,
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数计1个
$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
}
return $returnstr;
}
$str = '你好!我好';
$str = cut_str($str,3);
echo $str;