【PHP】これで分かる関数! – 正規表現・エスケープシーケンス –

PHP

更新履歴

更新日更新者更新内容
2021/8/21JJI・”はじめに”の段落を追加
・サンプルプログラムの実行結果に画面の画像を追加

はじめに

サンプルプログラムの中で次の記事で載せている関数を使用している場合があります。

エスケープシーケンス

エスケープシーケンスでよく使用する文字は次の通りです。

文字説明
\n改行 (newline)
\r復帰 (carriage return)
\R改行: \n、\r、\r\n にマッチする
\tタブ
\d半角数字、[0-9]と同じ
\D半角数字以外、[^0-9]と同じ
\s空白文字、[\r\n \t]と同じ
\S空白文字でない文字、[^\r\n \t]と同じ
\wワード(識別子)文字、[0-9A-Za-z_]と同じ
\Wワード(識別子)文字以外、[^0-9A-Za-z_]と同じ

サンプルプログラム

エスケープシーケンスを使用したサンプルプログラムを載せておきます。

サンプルプログラム1

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現:エスケープシーケンス<br>\n";

    // \nの正規表現
    $str1 = "Mike likes dog very very much.\n";
    $match = "/much.\n/";
    echo "検索対象文字列:" . preg_replace("/\n/", "\\n", $str1) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/", "\\n", $match) . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1) . ":<br>\n";
    echo "<br>\n";

    // \r\nの正規表現
    $str1 = "Mike likes dog very very much.\n";
    $match = "/much.\r\n/";
    echo "検索対象文字列:" . preg_replace("/\n/", "\\n", $str1) . ":<br>\n";
    echo "正規表現:" . preg_replace(["/\n/", "/\r/" ], ["\\n", "\\r"], $match) . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1) . ":<br>\n";
    echo "<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_04.php<br>
【PHP】正規表現:エスケープシーケンス<br>
検索対象文字列:Mike likes dog very very much.\n:<br>
正規表現:/much.\n/:<br>
正規表現の検索結果:1:<br>
<br>
検索対象文字列:Mike likes dog very very much.\n:<br>
正規表現:/much.\r\n/:<br>
正規表現の検索結果:0:<br>
<br>

サンプルプログラム2

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現:エスケープシーケンス<br>\n";

    // \dの正規表現
    $str1 = "101-0523";
    $match = "/\d{3}-\d{4}/";
    echo "検索対象文字列:" . $str1 . ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1) . ":<br>\n";
    echo "<br>\n";

    // \wの正規表現
    $str1 = "__info";
    $match = "/\w/";
    echo "検索対象文字列:" . $str1 . ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1) . ":<br>\n";
    echo "<br>\n";

    // \Wの正規表現
    $str1 = "__info";
    $match = "/\W/";
    echo "検索対象文字列:" . $str1 . ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1) . ":<br>\n";
    echo "<br>\n";
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_05.php<br>
【PHP】正規表現:エスケープシーケンス<br>
検索対象文字列:101-0523:<br>
正規表現:/\d{3}-\d{4}/:<br>
正規表現の検索結果:1:<br>
<br>
検索対象文字列:__info:<br>
正規表現:/\w/:<br>
正規表現の検索結果:1:<br>
<br>
検索対象文字列:__info:<br>
正規表現:/\W/:<br>
正規表現の検索結果:0:<br>
<br>

参考

この記事は代表的なエスケープシーケンスの文字について紹介しました。
この記事に載っていないエスケープシーケンスは次のPHPマニュアルに詳しく紹介しています。

PHP: エスケープシーケンス - Manual

コメント