1. 程式人生 > >PHP學習練手(十六)

PHP學習練手(十六)

Perl相容的正則表示式

一、函式:

preg_match():指示模式是否與字串匹配,一旦找到一個匹配返回1,否則返回0

preg_match_all():找到所有的匹配

preg_replace():實現查詢和替換作用

二、簡單的模式:
1. 字面量:是一個值,其書寫方式與所解釋的完全一樣。例如,模式a將匹配字母a,ab將匹配ab等。

  1. 定界符:可以是除字母數字或反斜槓外的任何字元,必須使用相同的字元來標記模式的開始和結束。通常使用正斜槓(/)

  2. 元字元 :
    這裡寫圖片描述

  3. 量詞:
    這裡寫圖片描述

  4. 常見的字元類別:
    這裡寫圖片描述



    三、實踐:

    1.單一匹配——pcre.php

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Testing PCRE</title> </head> <body> <?php # Script 14.1- pcre.php if($_SERVER['REQUEST_METHOD'] == 'POST') { $pattern = trim($_POST['pattern']); $subject
= trim($_POST['subject']); echo "<p>The result of checking<br /><b>$pattern</b><br />aganist<br />$subject<br />is</p>"; if(preg_match($pattern, $subject)) { echo 'TRUE!</p>'; }else{ echo
'FALSE!</p>'; } } ?>
<form action="pcre.php" method="post"> <p>Regular Expression Pattern: <input type="text" name="pattern" value="<?php if(isset($pattern)) echo htmlentities($pattern); ?>" size="40">(include the delimiters)</p> <p>Test Subject: <input type="text" name="subject" value="<?php if(isset($subject)) echo htmlentities($subject); ?>" size="40" /></p> <input type="submit" name="submit" value="Test!"> </form> </body> </html>

——實現電子郵件驗證:電子郵件開始於字母、數字或下劃線,以及句點(.)或短劃線。
這裡寫圖片描述

2.所有匹配——matches.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Testing PCRE</title>
</head>
<body>
    <?php # Script 14.1- pcre.php
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            $pattern = trim($_POST['pattern']);
            $subject = trim($_POST['subject']);

            echo "<p>The result of checking<br /><b>$pattern</b><br />aganist<br />$subject<br />is</p>";

            if(preg_match_all($pattern, $subject, $matches))
            {
                echo 'TRUE!</p>';
                echo '<pre>'.print_r($matches, 1).'<pre>';
            }else{
                echo 'FALSE!</p>';
            }
        }
    ?>
    <form action="matches.php" method="post">
        <p>Regular Expression Pattern: <input type="text" name="pattern" value="<?php if(isset($pattern)) echo htmlentities($pattern); ?>" size="40">(include the delimiters)</p>
        <p>Test Subject: <textarea name="subject" rows="5" cols="40"><?php if(isset($subject)) echo htmlentities($subject); ?></textarea></p>
        <input type="submit" name="submit" value="Test!">
    </form>
</body>
</html>

這裡寫圖片描述

3.匹配和替換——replace.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Testing PCRE</title>
</head>
<body>
    <?php # Script 14.1- pcre.php
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {
            $pattern = trim($_POST['pattern']);
            $subject = trim($_POST['subject']);
            $replace = trim($_POST['replace']);

            echo $subject;

            echo "<p>The result of replacing<br /><b>$pattern</b><br />with<br />$replace<br />in<br />$subject<br /><br />";

            if(preg_match($pattern, $subject))
            {
                echo preg_replace($pattern, $replace, $subject).'</p>';
            }else{
                echo 'The pattern was not found!</p>';
            }
        }
    ?>
    <form action="replace.php" method="post">
        <p>Regular Expression Pattern: <input type="text" name="pattern" value="<?php if(isset($pattern)) echo htmlentities($pattern); ?>" size="40">(include the delimiters)</p>
        <p>Replacement: <input type="text" name="replace" value="<?php if(isset($replace)) echo htmlentities($replace); ?>" size="40"></p>

        <p>Test Subject: <textarea name="subject" rows="5" cols="40"><?php if(isset($subject)) echo htmlentities($subject); ?></textarea></p>
        <input type="submit" name="submit" value="Test!">
    </form>
</body>
</html>

這裡寫圖片描述