ホームページ >バックエンド開発 >PHPチュートリアル >PHP を学び実践する (16)
Perl 互換の正規表現
1. 関数:
preg_match(): パターンが文字列と一致するかどうかを示し、一致が見つかると 1 を返し、そうでない場合は 0 を返します
preg_match_all(): Find all Match
preg_replace(): 検索と置換を実装します
2. シンプルモード:
1. リテラル: 解釈されたとおりに正確に記述される値です。たとえば、パターン a は文字 a と一致し、ab は ab と一致します。
区切り文字: 英数字またはバックスラッシュを除く任意の文字を使用できます。パターンの開始と終了をマークするには同じ文字を使用する必要があります。通常はスラッシュ (/)
メタ文字:
数量子:
一般的な文字カテゴリ:
3. 練習:
1. 単一一致 - pcre.php
<code><span><span>html</span><span>lang</span>=<span>"en"</span>></span><span>head</span>><span>meta</span><span>charset</span>=<span>"UTF-8"</span>><span>title</span>>Testing PCRE<span><span>title</span>></span><span><span>head</span>></span><span>body</span>><span><span><?php </span><span># Script 14.1- pcre.php</span><span>if</span>(<span>$_SERVER</span>[<span>'REQUEST_METHOD'</span>] == <span>'POST'</span>) { <span>$pattern</span> = trim(<span>$_POST</span>[<span>'pattern'</span>]); <span>$subject</span> = trim(<span>$_POST</span>[<span>'subject'</span>]); <span>echo</span><span>"<p>The result of checking<br><b>$pattern</b><br>aganist<br>$subject<br>is</p>"</span>; <span>if</span>(preg_match(<span>$pattern</span>, <span>$subject</span>)) { <span>echo</span><span>'TRUE!'</span>; }<span>else</span>{ <span>echo</span><span>'FALSE!'</span>; } } <span>?></span></span><span>form</span><span>action</span>=<span>"pcre.php"</span><span>method</span>=<span>"post"</span>></span><span>p</span>>Regular Expression Pattern: <span>input</span><span>type</span>=<span>"text"</span><span>name</span>=<span>"pattern"</span><span>value</span>=<span>"<?php if(isset($pattern)) echo htmlentities($pattern); ?>"</span><span>size</span>=<span>"40"</span>>(include the delimiters)<span><span>p</span>></span><span>p</span>>Test Subject: <span>input</span><span>type</span>=<span>"text"</span><span>name</span>=<span>"subject"</span><span>value</span>=<span>"<?php if(isset($subject)) echo htmlentities($subject); ?>"</span><span>size</span>=<span>"40"</span> /><span><span>p</span>></span><span>input</span><span>type</span>=<span>"submit"</span><span>name</span>=<span>"submit"</span><span>value</span>=<span>"Test!"</span>><span><span>form</span>></span><span><span>body</span>></span><span><span>html</span>></span></code>
- 電子メール検証を実装します。電子メールは文字、数字、またはアンダースコア、およびピリオド (.) またはダッシュで始まります。
2. すべての一致 -matches.php
<code><span><span>html</span><span>lang</span>=<span>"en"</span>></span><span>head</span>><span>meta</span><span>charset</span>=<span>"UTF-8"</span>><span>title</span>>Testing PCRE<span><span>title</span>></span><span><span>head</span>></span><span>body</span>><span><span><?php </span><span># Script 14.1- pcre.php</span><span>if</span>(<span>$_SERVER</span>[<span>'REQUEST_METHOD'</span>] == <span>'POST'</span>) { <span>$pattern</span> = trim(<span>$_POST</span>[<span>'pattern'</span>]); <span>$subject</span> = trim(<span>$_POST</span>[<span>'subject'</span>]); <span>echo</span><span>"<p>The result of checking<br><b>$pattern</b><br>aganist<br>$subject<br>is</p>"</span>; <span>if</span>(preg_match_all(<span>$pattern</span>, <span>$subject</span>, <span>$matches</span>)) { <span>echo</span><span>'TRUE!'</span>; <span>echo</span><span>'<pre class="brush:php;toolbar:false">'.print_r($matches, 1).'
'; }else{ echo'FALSE!'; } } ?>formaction="matches.php"method="post">p>Regular Expression Pattern: inputtype="text"name="pattern"value=""size="40">(include the delimiters)p>p>Test Subject: textareaname="subject"rows="5"cols="40">if(isset($subject)) echo htmlentities($subject); ?>textarea>p>inputtype="submit"name="submit"value="Test!">form>body>html>
3. 一致と置換 - replace.php
<code><span><span>html</span><span>lang</span>=<span>"en"</span>></span><span>head</span>><span>meta</span><span>charset</span>=<span>"UTF-8"</span>><span>title</span>>Testing PCRE<span><span>title</span>></span><span><span>head</span>></span><span>body</span>><span><span><?php </span><span># Script 14.1- pcre.php</span><span>if</span>(<span>$_SERVER</span>[<span>'REQUEST_METHOD'</span>] == <span>'POST'</span>) { <span>$pattern</span> = trim(<span>$_POST</span>[<span>'pattern'</span>]); <span>$subject</span> = trim(<span>$_POST</span>[<span>'subject'</span>]); <span>$replace</span> = trim(<span>$_POST</span>[<span>'replace'</span>]); <span>echo</span><span>$subject</span>; <span>echo</span><span>"<p>The result of replacing<br><b>$pattern</b><br>with<br>$replace<br>in<br>$subject<br><br>"</p></span>; <span>if</span>(preg_match(<span>$pattern</span>, <span>$subject</span>)) { <span>echo</span> preg_replace(<span>$pattern</span>, <span>$replace</span>, <span>$subject</span>).<span>''</span>; }<span>else</span>{ <span>echo</span><span>'The pattern was not found!'</span>; } } <span>?></span></span><span>form</span><span>action</span>=<span>"replace.php"</span><span>method</span>=<span>"post"</span>></span><span>p</span>>Regular Expression Pattern: <span>input</span><span>type</span>=<span>"text"</span><span>name</span>=<span>"pattern"</span><span>value</span>=<span>"<?php if(isset($pattern)) echo htmlentities($pattern); ?>"</span><span>size</span>=<span>"40"</span>>(include the delimiters)<span><span>p</span>></span><span>p</span>>Replacement: <span>input</span><span>type</span>=<span>"text"</span><span>name</span>=<span>"replace"</span><span>value</span>=<span>"<?php if(isset($replace)) echo htmlentities($replace); ?>"</span><span>size</span>=<span>"40"</span>><span><span>p</span>></span><span>p</span>>Test Subject: <span>textarea</span><span>name</span>=<span>"subject"</span><span>rows</span>=<span>"5"</span><span>cols</span>=<span>"40"</span>><span><span><?php </span><span>if</span>(<span>isset</span>(<span>$subject</span>)) <span>echo</span> htmlentities(<span>$subject</span>); <span>?></span></span><span><span>textarea</span>></span><span><span>p</span>></span><span>input</span><span>type</span>=<span>"submit"</span><span>name</span>=<span>"submit"</span><span>value</span>=<span>"Test!"</span>></span><span><span>form</span>></span><span><span>body</span>></span><span><span>html</span>></span></code>
以上、PHPの学習と実践(16)を内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。