匹配一个html标签,匹配table如下:
<table.*?>[ss]*</table>
或
<table.*?>[ss]*?</table>
以上两个表达式,一个加了"?"和一个却不加"?",那么这有什么区别呢?
我们知道"?"在正则表达式里是一个通配符:匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。
在这里,通过测试,我们得出这样的结论:在不加"?"的情况下,在匹配下面一段内容的时候:
<table>这是第一个table</table>
我不是table里的内容
<table>这是第二个table</table>
我也不是table里的内容
<table>这是第三个table</table>
<?
$str=preg_replace("/s+/", " ", $str); //过滤多余回车
$str=preg_replace("/<[ ]+/si","<",$str); //过滤<__("<"号后面带空格)
$str=preg_replace("/<!--.*?-->/si","",$str); //注释
$str=preg_replace("/<(!.*?)>/si","",$str); //过滤doctype
$str=preg_replace("/<(/?html.*?)>/si","",$str); //过滤html标签
$str=preg_replace("/<(/?head.*?)>/si","",$str); //过滤head标签
$str=preg_replace("/<(/?meta.*?)>/si","",$str); //过滤meta标签
$str=preg_replace("/<(/?body.*?)>/si","",$str); //过滤body标签
$str=preg_replace("/<(/?link.*?)>/si","",$str); //过滤link标签
$str=preg_replace("/<(/?form.*?)>/si","",$str); //过滤form标签
$str=preg_replace("/cookie/si","cookie",$str); //过滤cookie标签
$str=preg_replace("/<(applet.*?)>(.*?)<(/applet.*?)>/si","",$str); //过滤applet标签
$str=preg_replace("/<(/?applet.*?)>/si","",$str); //过滤applet标签
$str=preg_replace("/<(style.*?)>(.*?)<(/style.*?)>/si","",$str); //过滤style标签
$str=preg_replace("/<(/?style.*?)>/si","",$str); //过滤style标签
$str=preg_replace("/<(title.*?)>(.*?)<(/title.*?)>/si","",$str); //过滤title标签
$str=preg_replace("/<(/?title.*?)>/si","",$str); //过滤title标签
$str=preg_replace("/<(object.*?)>(.*?)<(/object.*?)>/si","",$str); //过滤object标签
$str=preg_replace("/<(/?objec.*?)>/si","",$str); //过滤object标签
$str=preg_replace("/<(noframes.*?)>(.*?)<(/noframes.*?)>/si","",$str); //过滤noframes标签
$str=preg_replace("/<(/?noframes.*?)>/si","",$str); //过滤noframes标签
$str=preg_replace("/<(i?frame.*?)>(.*?)<(/i?frame.*?)>/si","",$str); //过滤frame标签
$str=preg_replace("/<(/?i?frame.*?)>/si","",$str); //过滤frame标签
$str=preg_replace("/<(script.*?)>(.*?)<(/script.*?)>/si","",$str); //过滤script标签
$str=preg_replace("/<(/?script.*?)>/si","",$str); //过滤script标签
$str=preg_replace("/网页特效/si","javascript",$str); //过滤script标签
$str=preg_replace("/vbscript/si","vbscript",$str); //过滤script标签
$str=preg_replace("/on([a-z]+)s*=/si","on\1=",$str); //过滤script标签
$str=preg_replace("/&#/si","&#",$str); //过滤script标签,如javascript:alert('aabb)
?>
del_dir(删除的路径,1表示删除目录下数据,0默认删除本目录);/
代码如下 | 复制代码 |
function del_dir($dir_adds='',$del_def=0) { $result = false; if(! is_dir($dir_adds)){ return false; } $handle = opendir($dir_adds); while(($file = readdir($handle)) !== false){ if($file != '.' && $file != '..') { $dir = $dir_adds . directory_separator . $file; is_dir($dir) ? $this->del_dir($dir) : unlink($dir); } } closedir($handle); if($del_def==0){ $result = rmdir($dir_adds) ? true : false; }else { $result = true; } return $result; } |
非负浮点数(正浮点数 + 0):^d+(.d+)?$
正浮点数 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮点数(负浮点数 + 0) ^((-d+(.d+)?)|(0+(.0+)?))$
负浮点数 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数 ^(-?d+)(.d+)?
^[1-9]d*$
//匹配正整数
^-[1-9]d*$
//匹配负整数
^-?[1-9]d*$
//匹配整数
^[1-9]d*|0$
//匹配非负整数(正整数 + 0)
^-[1-9]d*|0$
//匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$
//匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$
//匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$
//匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$
//匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$
//匹配非正浮点数(负浮点数 + 0)
验证数字:^[0-9]*$
验证n位的数字:^d{n}$
验证至少n位数字:^d{n,}$
验证m-n位的数字:^d{m,n}$
验证零和非零开头的数字:^(0|[1-9][0-9]*)$
验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
验证非零的正整数:^+?[1-9][0-9]*$
验证非零的负整数:^-[1-9][0-9]*$
验证非负整数(正整数 + 0) ^d+$
验证非正整数(负整数 + 0) ^((-d+)|(0+))$
验证长度为3的字符:^.{3}$
?>
<input onkeyup="value=value.replace(/[^(d|.)]/g,'') "onbeforepaste="clipboarddata.setdata('text',clipboarddata.getdata('text').replace(/[^(d|.)]/g,''))" >
php教程字符串截取函数
在php中有一款字符串截取函数substr但这款函数,只能截取英文不支持中文与其
它的混体,下面我们提供了三款函数,它们可以支持中英文混合体。
function syssubstr($string,$length,$append = false)
{
if (strlen($string) < = $length )
{
return $string;
}
else
{
$i = 0;
while ($i < $length)
{
$stringtmp = substr($string,$i,1);
if ( ord($stringtmp) >=224 )
{
$stringtmp = substr($string,$i,3);
$i = $i + 3;
}
elseif( ord($stringtmp) >=192 )
{
$stringtmp = substr($string,$i,2);
$i = $i + 2;
}
else
{
$i = $i + 1;
}
$stringlast[] = $stringtmp;
}
$stringlast = implode("",$stringlast);
if($append)
{
$stringlast .= "...";
}
return $stringlast;
}
}$string = "";
$length = "18";
$append = false;
echo syssubstr($string,$length,$append);
字符串截取函数二
function cut_str($string,$sublen,$start=0,$code='utf-8')
{
if($code=='utf-8')
{
$pa="/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf]
[x80-xbf][x80-xbf]/";
preg_match_all($pa,$string,$t_string);if(count($t_string[0])-$start>$sublen) return join('',array_slice
($t_string[0],$start,$sublen))."...";
return join('',array_slice($t_string[0],$start,$sublen));
}
else
{
$start=$start*2;
$sublen=$sublen*2;
$strlen=strlen($string);
$tmps教程tr='';for($i=0;$i<$strlen;$i++)
{
if($i>=$start&&$i<($start+$sublen))
{
if(ord(substr($string,$i,1))>129)
{
$tmpstr.=substr($string,$i,2);
}
else
{
$tmpstr.=substr($string,$i,1);
}
}
if(ord(substr($string,$i,1))>129) $i++;
}
if(strlen($tmpstr)<$strlen ) $tmpstr.="...";
return $tmpstr;
}
}$str="新程php培训";
echo cut_str($str,8,0,'gb2312');
函数三
<?php
//截取utf8字符串
function utf8substr($str, $from, $len)
{
return preg_replace('#^(?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$from.'}'.
'((?:[x00-x7f]|[xc0-xff][x80-xbf]+){0,'.$len.'}).*#s',
'$1',$str);
}
?>
上面三款函数都很好对中文字符等进行截取了,好了不说多了这些都是来自于网络
。
代码如下 | 复制代码 |
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>environment</title> </head> <?php $str = "中12hb千钧一发lap"; echo mb_substr($str,0,5,'utf-8');echo '<br>'; echo mb_substr($str,5,3,'utf-8');echo '<br>'; echo mb_substr($str,8,4,'utf-8'); ?> <body> </body> </html> |
<?
代码如下 | 复制代码 |
function str_wrap1($str,$elen=30) echo str_wrap1($str,5); |
?>