php中的正则表达式:
(1)、简单的查找功能:
<?php
header("content-type:text/html;charset=utf-8");
$subject="this is a test 12315465 HELLO WORLD\n";
$pattern="#this#i"; /*这里的#号是定界符 i表示的是忽略大小写(模式修正符)*/
//$pattern="#\d#"; 匹配0-9的数字;
//$pattern="#\n#"; 匹配非打印字符;
//$pattern="#\d#"; 匹配的是0-9的数字;
//$pattern="#[0-9]#"; 匹配的是0-9的数字;
//$pattern="#\D#"; 匹配的是非数字
//$pattern="#[0-9a-zA-Z]#"; 匹配的是0-9 a-z A-Z的字符 相当于#\w# 而#W#则是匹配的特殊字符;
if(pre_match($pattern,$subject)){
echo "找到了";
}
else
{
echo "没有找到";
}
?>
(2)、进一步的查找功能:
<?php
$subject="google";
$pattern="#go*gle";
/*
这里的*号是匹配的0次1次或者是多次;
*/
//$pattern="#go{0,}gle#"; 等价于*;
//$pattern="#go+gle#"; +号是匹配前面的一次或者是多次;相当于go{1,}gle;
//$pattern="#go?gle#"; 等价于go{0,1}gle;
//$pattern="#.#"; 等价于除了换行符以外的任意字符
?>
(3)、正则表达式的函数:
<?php
$subject ="nuocheng is nuocheng";
$pattern="#nuocheng#";
preg_match($pattern,$subject,$matches); //这里是将匹配的值返回到matches中
preg_match_all($pattern,$subject,$matches); //匹配subject中所有的相关字符串;
$strr="
京东 http://www.jd.com
天猫 https://tmall.com
一号店 http://yhd.com
诺铖的博客 https://nuocheng.github.io
"
$pat="#(?:http|https)://\w+\.\w+(?:\.\w+)*#"
/*表示的含义是:
?:表示的是指匹配0次或者是1次
(http|https)是http或者是https
\w+ 表示但是匹配0-9 a-z A-Z的所有字符;
\.表示但是匹配.
(\.\w+)* 表示的是如果之后还有元素,进行括号内的模式进行匹配;
*/
preg_match_all($pat,$strr,$matchess);
foreach($matchess[0] as $val){
$strr=str_replace($val,"<a href={$val}>{$val}<\a>",$strr);
}
echo $strr;
?>