【 PHP 】PHP8に入門してみた 127日目 PHPの基本 ( 組み込み関数 正規表現 )

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

組み込み関数

正規表現の基本 preg_match関数

正規表現で文字列を検索する基本はpreg_matchです。
結果が戻り値として返ってくるのではなく、パラメータで渡した変数に結果が埋め込まれた形で「返って」きます。

これまで見てきた関数にもこのようなパターンをたびたび見てきました。
PHPではこれが普通なんですね。慣れないといけません😅

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHPの基本</title>
</head>

<body>
    <?php

    $str = '彼の電話番号は0399-88-9785、私のは0398-99-1234です。郵便番号はどちらも687-1109です。';
    if (preg_match('/([0-9]{2,4})-([0-9]{2,4})-([0-9]{4})/', $str, $data)) {
        print "電話番号:${data[0]} <br />";
        print "市外局番:${data[1]} <br />";
        print "市内局番:${data[2]} <br />";
        print "加入者番号:${data[3]} <br />";
    }
    ?>
</body>

</html>

preg_match関数は最初にマッチした文字列だけが対象です。

マッチしたすべての文字列を取得したいならpreg_match_allを使います。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHPの基本</title>
</head>

<body>
    <?php

    $str = '彼の電話番号は0399-88-9785、私のは0398-99-1234です。郵便番号はどちらも687-1109です。';

    // 全部ほしい場合!
    if (preg_match_all('/([0-9]{2,4})-([0-9]{2,4})-([0-9]{4})/', $str, $data, PREG_SET_ORDER)) {
        foreach ($data as $item) {
            print "電話番号:${item[0]} <br />";
            print "市外局番:${item[1]} <br />";
            print "市内局番:${item[2]} <br />";
            print "加入者番号:${item[3]} <br />";
            print "------------------------------------------------------------ <br />";
        }
    }
    ?>
</body>

</html>

 

メモ

やっと配列地獄おわり!

PHPPHP

Posted by raika@blog