PHP學習練手(十六)
阿新 • • 發佈:2018-12-25
Perl相容的正則表示式
一、函式:
preg_match():指示模式是否與字串匹配,一旦找到一個匹配返回1,否則返回0
preg_match_all():找到所有的匹配
preg_replace():實現查詢和替換作用
二、簡單的模式:
1. 字面量:是一個值,其書寫方式與所解釋的完全一樣。例如,模式a將匹配字母a,ab將匹配ab等。
定界符:可以是除字母數字或反斜槓外的任何字元,必須使用相同的字元來標記模式的開始和結束。通常使用正斜槓(/)
元字元 :
量詞:
常見的字元類別:
三、實踐: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>