【PHP】これで分かる関数! – 正規表現関数その4 –

PHP

preg_split/mb_split

preg_split

preg_split()関数を使用したサンプルプログラムです。
preg_split()関数はマルチバイト文字でも正しく処理はできます。

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

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現関数:preg_split<br>\n";

// 検索対象文字列
$str1 = <<< END
Mike have a black big dog.
Mary have a white small cat.
END;

// 検索対象文字列
$str2 = <<< END
マイクは、黒いイヌを飼っています。
メアリーは、白いネコを飼っています。
END;

    // シングルバイト文字列をシングルバイト文字の区切り文字で分割
    $match = "/\s|\.|\n/";
    echo "検索対象文字列:" . preg_replace("/\n/" ,"\\n" ,$str1) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/" ,"\\n" ,$match) . ":<br>\n";
    $result = preg_split($match, $str1);
    echo_array1($result);

    // マルチバイト文字列をシングルバイト文字の区切り文字で分割
    $match = "/\n/";
    echo "検索対象文字列:" . preg_replace("/\n/" ,"\\n" ,$str2) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/" ,"\\n" ,$match) . ":<br>\n";
    $result = preg_split($match, $str2);
    echo_array1($result);

    // マルチバイト文字列をマルチバイト文字の区切り文字で分割
    $match = "/、|。/";
    echo "検索対象文字列:" . preg_replace("/\n/" ,"\\n" ,$str2) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/" ,"\\n" ,$match) . ":<br>\n";
    $result = preg_split($match, $str2);
    echo_array1($result);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_29.php<br>
【PHP】正規表現関数:preg_split<br>
検索対象文字列:Mike have a black big dog.
\nMary have a white small cat.:<br>
正規表現:/\s|\.|\n/:<br>
[0]:Mike: [1]:have: [2]:a: [3]:black: [4]:big: [5]:dog: [6]:: [7]:: [8]:Mary: [9]:have: [10]:a: [11]:white: [12]:small: [13]:cat: [14]::<br><br>
検索対象文字列:マイクは、黒いイヌを飼っています。
\nメアリーは、白いネコを飼っています。:<br>
正規表現:/\n/:<br>
[0]:マイクは、黒いイヌを飼っています。
: [1]:メアリーは、白いネコを飼っています。:<br><br>
検索対象文字列:マイクは、黒いイヌを飼っています。
\nメアリーは、白いネコを飼っています。:<br>
正規表現:/、|。/:<br>
[0]:マイクは: [1]:黒いイヌを飼っています: [2]:
メアリーは: [3]:白いネコを飼っています: [4]::<br><br>

mb_split

mb_split()関数を使用したサンプルプログラムです。

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

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現関数:mb_split<br>\n";

// 検索対象文字列
$str1 = <<< END
Mike have a black big dog.
Mary have a white small cat.
END;

// 検索対象文字列
$str2 = <<< END
マイクは、黒いイヌを飼っています。
メアリーは、白いネコを飼っています。
END;

    // シングルバイト文字列をシングルバイト文字の区切り文字で分割
    $match = "\s|\.|\n";
    echo "検索対象文字列:" . preg_replace("/\n/" ,"\\n" ,$str1) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/" ,"\\n" ,$match) . ":<br>\n";
    $result = mb_split($match, $str1);
    echo_array1($result);

    // マルチバイト文字列をシングルバイト文字の区切り文字で分割
    $match = "\n";
    echo "検索対象文字列:" . preg_replace("/\n/" ,"\\n" ,$str2) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/" ,"\\n" ,$match) . ":<br>\n";
    $result = mb_split($match, $str2);
    echo_array1($result);

    // マルチバイト文字列をマルチバイト文字の区切り文字で分割
    $match = "、|。";
    echo "検索対象文字列:" . preg_replace("/\n/" ,"\\n" ,$str2) . ":<br>\n";
    echo "正規表現:" . preg_replace("/\n/" ,"\\n" ,$match) . ":<br>\n";
    $result = mb_split($match, $str2);
    echo_array1($result);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_30.php<br>
【PHP】正規表現関数:mb_split<br>
検索対象文字列:Mike have a black big dog.
\nMary have a white small cat.:<br>
正規表現:\s|\.|\n:<br>
[0]:Mike: [1]:have: [2]:a: [3]:black: [4]:big: [5]:dog: [6]:: [7]:: [8]:Mary: [9]:have: [10]:a: [11]:white: [12]:small: [13]:cat: [14]::<br><br>
検索対象文字列:マイクは、黒いイヌを飼っています。
\nメアリーは、白いネコを飼っています。:<br>
正規表現:\n:<br>
[0]:マイクは、黒いイヌを飼っています。
: [1]:メアリーは、白いネコを飼っています。:<br><br>
検索対象文字列:マイクは、黒いイヌを飼っています。
\nメアリーは、白いネコを飼っています。:<br>
正規表現:、|。:<br>
[0]:マイクは: [1]:黒いイヌを飼っています: [2]:
メアリーは: [3]:白いネコを飼っています: [4]::<br><br>

コメント