php截取指定字符之间字符串及正则记录

 1、PHP截取两个字符之间字符串

$str = "你好<我>(爱)[北京]{天安门}";
echo get_between($str, '[', ']'); //返回北京
function get_between($input, $start, $end)
{
$substr = substr($input, strlen($start) + strpos($input, $start), (strlen($input) - strpos($input, $end)) * (-1));
return $substr;
}

  2、匹配不同括号内容

   echo f1($str); //返回你好 
   echo f2($str); //返回我 
   echo f3($str); //返回爱 
   echo f4($str); //返回北京 
   echo f5($str); //返回天安门
   function f1($str) { 
    $result = array(); 
    preg_match_all("/^(.*)(?:<)/i",$str, $result); 
    return $result[1][0]; 
   } 
   function f2($str) { 
    $result = array(); 
    preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result); 
    return $result[1][0]; 
   }
   function f3($str) { 
    $result = array(); 
    preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result); 
    return $result[1][0]; 
    }
   function f4($str) { 
    $result = array(); 
    preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result); 
    return $result[1][0]; 
    }
   function f5($str) { 
    $result = array(); 
     preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result); 
     return $result[1][0]; 
    } 

 

  3、匹配html中的图片

// 图片
/<img[^>]*src="([^"]*)\??[^"]*"[^>]*>/
// 懒加载图片
/<img[^>]*data-src="([^"]*)\??[^"]*"[^>]*>/
4、html中meta描述
/<meta[^>\/]*name="description"\s+content="(.*?)">/is
5、金额格式
/^([1-9]\d{0,9}|0)([.]?|(\.\d{1,2})?)$/
6、不包含( 字母 数字 @ . - _ ) 以外的其他字符
/^[\w|\d|\@|\.|\-|\_]+$/
7、校验密码强度
// 密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。
/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/
8、校验中文
// 字符串仅能是中文。
/^[\\u4e00-\\u9fa5]{0,}$/
9、由数字、26个英文字母或下划线组成的字符串
// 字符串仅能是中文。
/^\\w+$/
10、校验E-Mail 地址
// E-mail地址合规性的正则检查语句。
/[\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?/
11、校验身份证号码
/15位:
/^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$/

//18位:
/^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$/
12、校验日期
// “yyyy-mm-dd“ 格式的日期校验,已考虑平闰年。
/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/ 
13、PHP 删除a标签内包含img的a标签
  preg_replace('/<a [^>]+>(<img[^>]+>).*?<\/a>/s', '$1', $str);
14、校验img下的src
  /<img[^>]*src=[\'\"]*([^\'\"]*)[\'\"][^>]*>/is


注释:
     \w [a-z A-Z 0-9_]
     \W \w的补集
     . 任意字符,不换行
     \s空白符,包括\n\r\t\v
     \S \s的补集 非空白符
     $& 与正则相匹配的字符串
     $` 匹配字符串左边的字符
         $’ 匹配字符串右边的字符
     $1,$2,$,3,…,$n 匹配结果中对应的分组匹配结果
     $&
     $& 适用于没有子表达式的情况
 
     补集 不在范围内的[^qz]
     贪婪非贪婪 /g.+d/ 贪婪模式 /g.+?d/ 非贪婪模式 在数量(+ * {n,})限定符后,加?,非贪婪模式
     前瞻 断言 正预测 零宽度 ‘/\b\w+(?=ing)\b/’
     前瞻 断言 负预测 零宽度 ‘/\b\w+(?!ing)\w{3}\b/’
     /i (忽略大小写)
     /g (全文查找出现的所有匹配字符)
     /m (多行查找)
     /gi(全文查找、忽略大小写)
    /ig(全文查找、忽略大小写)
posted @ 2020-12-25 16:52  温酒书生。  阅读(3317)  评论(0编辑  收藏  举报