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>
コメント