PHP之正则表达式

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;

?>
Fork me on GitHub