<?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);
![]()