正则表达式学习
<?php
header('Content-type:text/html;charset=utf-8');
//前导表示前面一个字符串
//位置
//+ 至少一个
//* 0 或者多个
// ? 0 或一个
//.任意一个字符
// .*前导任意字符,0个或多个
//{3} ,前导必须3个
// | 条件选择符
//^开始 $结束
//[],里的面任意一个即可。
//[a-z]表示26个字母中,随便一个
//[^abc]除了abc
//()分组 (?:)不获取分组 (?=)限定也是不获取分组 |必须被分组()包含起来
//元字符
//\w 代表[a-zA-Z0-9_]
//\d [0-9]
//\D [^0-9]
// \s 空白字符
//\b表示到达单词边界 ,边界可以理解为空格
//修饰符
//i : 不区分大小写
//m : 匹配首尾的时候,如果遇到换行, 也应该承认是结尾,只对 ^ $有作用
//x: 忽略掉规则模式中的空白
//A: 表示必须从头开始
//s: 将多行视为一行
/*
$model = "/ph p/xmA"; //规则模式
$string = "this is php\n, good";
if(preg_match($model, $string)){
echo "匹配";
}else{
echo '不匹配';
}
搜索数组中的相匹配的字符串
preg_grep()函数
$language = array('python','ruby','php','asp','jsp');
找出最流行的3p语言
print_r(preg_grep('/p$/', $language,PREG_GREP_INVERT));
python 蟒蛇语言.
找出以p开头的
print_r(preg_grep('/^p/', $language));
搜索模式 ,返回真假;
echo preg_match('/php[0-5]/','php6'); //匹配一次
//匹配电子邮件
$pattern = '/([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})/';
$mail = 'yc60.com@-gmail.com';
if(preg_match($pattern, $mail)){
echo "电子邮件合法";
}else{
echo '电子邮件不合法';
}
//匹配全局
preg_match_all('/php[1-5]/', 'php1saddsphp2sffphp3', $matches);
print_r($matches);
preg_match_all('/<[a-zA-Z]+>.*<//>|<[a-zA-Z]+/>/', 'php1saddsphp2sffphp3', $matches);
print_r($matches);
preg_match_all('/php[1-5]/', 'php1saddsphp2sffphp3', $matches);
print_r($matches);
// $pattern = '/([\w\.]{2,255})@([\w\-]{1,255}).([a-z]{2,4})/';
// $mail = 'yc60.com@-gmail.com';
// if(preg_match($pattern, $mail,$matches)){
// echo "电子邮件合法";
// print_r($matches);
// }else{
// echo '电子邮件不合法';
// }
//匹配文件名。
// $mode = '/\.(jpg|gif|png)$/';
// $file = 'ddwsffdfqd.gif.png';
// if(preg_match($mode, $file,$matches)){
// print_r($matches);
// }else{
// echo "不成功";
// }
//取出扩展名
$mode = '/^[a-zA-Z0-9_\.]+\.([a-z0-9A-Z]+)$/';
$file = 'ddwsffdfqd.gif.png.zip';
if(preg_match($mode, $file,$matches)){
print_r($matches);
}else{
echo "不成功";
}
//贪婪和分组获取的案例,ubb;
$string = 'This is a [b]php5[/b], This is a [b]php6[/b]';
$mode = '/\[b\](.*)\[\/b\]/U';
$replace = '<strong>$1</strong>';
echo preg_replace($mode, $replace, $string);
echo $string;
$string = '我是被index.php 导入的{$name}';
$mode = '/\{\$(\w+)\}/';
$replace = '<strong>$1</strong>';
echo preg_replace($mode, $replace, $string);
// echo $string;
$str = '{foreach $array(key, value)}';
$patternForeach = '/\{foreach\s+\$(\w+)\s*\((\w+)\s*,\s*(\w+)\)\}/';
preg_match($patternForeach, $str,$matches);
print_r($matches);
$str = '{include "test.php"}';
$pattern = '/\{include\s+["\'](.*)["\']\}/';
preg_match($pattern, $str,$matches);
print_r($matches);
*/
$pattern = '/.*/xs';
$str = "cdcds\nabc";
preg_match($pattern, $str,$matches);
print_r($matches);