php常见正则表达式

<?php
/**
 * \d:0-9   \D:取反
 * \w:0-9 a-z A-Z _  \W:取反
 * \s:空白符 \S:除了空白符
 *
 * 元字符:
 *   .      除了换行符之外的任意字符
 *   *      匹配前面字符出现一次0次或者多次
 *   ?     出现一次或0次
 *   ^      必须以它开头
 *   $      必须以它结尾
 *   +      出现一次或者多次
 *  {n}     出现n次
 *  {n,}    大于n次
 *  {n,m}   大于n小于m
 *  []      集合
 *  ()      整体
 *  [^]     取反
 *  |       或者
 *  [-]     范围
 *  模式修正符:
 *  i m e s U x A D u
 *
 */

//正则表达式139开头手机号码
$phone = '13960225896';

preg_match('/^139[0-9]{8}$/', $phone, $match);
preg_match('/^139\d{8}$/', $phone, $match2);
var_dump($match);
var_dump($match2);

//取出img标签的src
$str = '<div class="u-face"><a href="//space.bilibili.com/106827698" target="_blank" report-id="head" class="fa"><img src="//i0.hdslb.com/bfs/face/03314a91769eb94ffea6dfdab833a9e29cf3d66a.jpg@68w_68h.webp" width="48" height="48" class="up-face"><!----><!----><!----></a></div>';

$pattern = '/<img.+?src="(.+?)".+?>/';
preg_match($pattern, $str, $match3);
var_dump($match3);

// *  后向引用
$str     = '<b>abc</b><b>asdsbc</b><b>asdsbc</b>';
$pattern = '/<b>(.+?)<\/b>/';
$match4  = preg_replace($pattern, '\\1', $str);
$match5  = preg_replace($pattern, '<b>123</b>', $str);
var_dump($match4);
var_dump($match5);

//preg_match_all
$userinfo = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>";
preg_match_all('/<b>(.*)<\/b>/U', $userinfo, $pat_array);
var_dump($pat_array);

//使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
var_dump($keywords);

//utf中文匹配
$str     = 'UTF-8匹配:在javascript中,要判定字符串是中文是很简朴的。比如:var str = "php编程";if (/^[\u4e00-\u9fa5]+$/.test(str)) {alert("该字符串全部是中文");} else{alert("该字符串不全部是中文");}php中,是用 ...';
$pattern = '/[\x{4e00}-\x{9fa5}]+/u';
preg_match_all($pattern, $str, $match6);
var_dump($match6);

//gb3412中文匹配
$pattern = '/['.chr(0xb0).'-'.chr(0xf7).']['.chr(0xa1).'-'.chr(0xfe).']/';
preg_match_all($pattern, $str, $match7);
//var_dump($match7);

 

 

posted @ 2020-06-15 16:46  A-GREATE-USERNAME  阅读(173)  评论(0编辑  收藏  举报