<!-- PHP中的正则表达式 -->
<?php
// 定界符:
// 中间写正则
// //
// $$
// %%
// ^^
// @@
// ()
// AA
// include_once 'Class6.php';
//原子通常指空格、点、特殊符号等;
// 特殊标识的原子
// \d 匹配一个0-9
// \D 除了0-9以外的所有字符
// \w a-zA-Z0-9_
// \W 除了0-9A-Za-z_以外的所有字符
// \s 匹配所有空白字符\n\t\r空格
// \S 匹配所有非空白字符
// [] 指定范围的原子
$zz = '/a/';
$string = 'fsadfgsadfasdfsd';
if (preg_match($zz, $string,$matches)) {
echo '匹配到了,结果为:';
var_dump($matches);
}else{
echo '没有匹配到!';
}
// 原子等价式
// \w [a-zA-Z0-9_]
// \W [^a-zA-Z0-9_]
// \d [0-9]
// \D [^0-9]
// \s [\t\n\f\r]
// \S [^\t\n\f\r]
$zzz = '/[^0-9A-Za-z_]/';
$string = 'aaaaab311dd';
$string1 = '##@$#$%$%^^';
if (preg_match($zzz, $string1,$matches)) {
echo '匹配成功,结果为:';
var_dump($matches);
}else{
echo '匹配失败!';
}
//元字符(重点)
//模式匹配符
$pattern = '/^a\d+/m';
$string3 = "学好成a9为大神,干番大事业";
if (preg_match($pattern, $string3,$matches)) {
echo '匹配完成,结果为:';
var_dump($matches);
}else {
echo '匹配失败!'.'<br />';
}
$pattern = '/新的未来.+\d+/s';
$string = "新的未来987654321";
if (preg_match($pattern, $string,$matches)) {
echo '匹配完成,结果为:';
var_dump($matches);
}else {
echo '匹配失败!';
}
$pattern = '/(\w+)@(\w+).(com|org)/';
$str = "bob@example.com";
preg_match($pattern, $str, $match);
print_r($match);
// UBB文本编辑器
$string4='[b]为你写诗句[/b]
[i]为你做不可能的事[/i]
[u]诶呀,哥不是写情诗[/u]
[color=Red]哥是再说情歌[/color]
[size=7]吴克群[/size]
[qq]123123123[/qq]';
//匹配UBB字符
$pattern=array(
'/\【b\】(.*)\【\/b\】/i',
'/\【i\】(.*)\【\/i\】/iU',
'/\【u\】(.*?)\【\/u\】/i',
'/\【color=(.*?)\】(.*?)\【\/color\】/',
'/\【size=(\d)\】(.*?)\【\/size\】/',
'/\【qq\】(\d{5,12})\【\/qq\】/');
$replace=array(
'<b>\\1</b><br />',
'<i>\\1</i><br />',
'<u>\\1</u><br />',
'<font color="\\1">\\2</font><br />',
'<font size="\\1">\\2</font><br />',
'<a href="http://wpa.qq.com/msgrd?V=1&Uin=\\1&Site=[Discuz!]&Menu=yes"target="_blank"><img src="http://wpa.qq.com/pa?p=1:\\1:1" border="0"></a>');
$ubb = preg_replace($pattern, $replace, $string4);
echo $ubb;
// 1.POSIX正则表达式扩展在PHP哪个版本被废弃了
// 答: PHP 5.3.0 开始
// 2.请写出匹配任意数字,任意空白字符,任意单词字符的符号?
// 答: \d \s \w
// 3.执行一个正则表达式匹配的函数是什么?返回的结果有哪些?
// 答: preg_match($pattern,$subject [,&$matches]),返回结果0或1,因为preg_match()在第一次匹配后停止搜索
// 4.执行一个全局正则表达式匹配的函数是什么?
// 答: pregmatch_all($pattern,$subject [,&$matches])
// 5.执行一个正则表达式的搜索和替换的函数是什么?
// 答: preg_replace($pattern,$replacement,$subject)
// 6.通过一个正则表达式分隔字符串的函数是什么?
// 答: preg_split($pattern,$subject)
// 7.返回匹配模式的数组条目的函数是什么?
// 答: preg_grep($pattern,$array)
// 8.写出一个邮箱匹配规则?
// 答: $pattern = '/^[a-z\d_-]+@[a-z\d]+.[a-z]{2,3}$/i'
// 9.写出一个国内电话和手机的匹配规则,匹配的电话形式为?010-87898765,0798-8765342,0798-12345678,18607086789,+8613989765432
// 答: $pattern = '/^(\+86)?1\d{10}|\d{3}-\d{8}|\d{4}-\d{7,8}$/'
// a.写出一个密码匹配规则,要求以字母开头,6-18位?
// 答: $pattern = '/^[a-z]\w{5,17}$/i'
// A.写一个函数,要求将传入的字符串使用逗号或空格(包含" ", \r, \t, \n, \f)分隔成数组
function split($string){
return preg_split("/[\s,]+/", $string);
// B.截取某个字符串中的MAC地址,然后匹配类似于这种:mac:0A:89:82:84:F4:09
function replace($string){
return preg_replace("/.*(([a-z\d]{2}:){5}[a-z\d]{2}).*/i","mac:$1",$string);
}
$string = "Link encap:Ethernet HWaddr 00:16:3E:00:6E:363eefrrr";
var_dump(replace($string));
//mac:00:16:3E:00:6E:36
?>
php基础二(正则表达式)
最新推荐文章于 2022-02-22 14:37:52 发布