トッカンソフトウェア

PHP 正規表現

正規表現を使用すると複雑な検索や置換ができます。

検索

正規表現を使用して検索を行うには、preg_match関数を使用します。引数は以下になります。

preg_match("/正規表現指定/", 対象文字列,検索結果配列)

対象文字列が含まれるかどうかを調べる場合、検索結果配列は省略できます。
				
<?php

$str = "aaabbbcccddd";
$str2 = " 123abc4567";

echo "正規表現は/・・・/で囲んで指定します。<br />";
if (preg_match("/^a/", $str)) {
	echo "preg_match(\"/^a/\", $str)<br />";
	echo "true";
}

echo "<br /><br />";

echo "/・・・/i とすると大文字小文字を無視します<br />";
if (preg_match("/D$/i", $str)) {

	echo "preg_match(\"/D$/i\", $str)<br />";
	echo "true";
}

echo "<br /><br />";

$ary = [];
$ary2 = [];

echo "(・・・)で囲んだ部分を抜き出すこともできます。<br />";
echo "preg_match(\"/(b+).*?(d+)/\", {$str}, \$ary)<br />";
preg_match("/(b+).*?(d+)/", $str, $ary);

echo "<pre>";
print_r($ary);
echo "</pre>";

echo "|でorの指定ができます。<br />";
echo "preg_match(\"/(abc|def).+?([^45])/\", {$str2}, \$ary)<br />";
preg_match("/(abc|def).+?([^45]+)/", $str2, $ary);

echo "<pre>";
print_r($ary);
echo "</pre>";

echo "[]でこのなかのいずれかの指定ができ、-で範囲の指定ができます。{}で繰り返し指定ができます<br />";
echo "preg_match(\"/([0-9a-z\s]{4})/\", $str2, \$ary)<br />";
preg_match("/([0-9a-z]{4})/", $str2, $ary);

echo "<pre>";
print_r($ary);
echo "</pre>";
?>


			
実行イメージ



正規表現 説明
/・・・/i 大文字小文字を無視
^ 先頭
$ 末尾
+ 前の文字を1文字以上繰り返し
* 前の文字を0文字以上繰り返し
. なにか1文字
? なにか1文字または文字なし
{数} 前の文字を数文字繰り返し
{From数,To数} From数~To数文字繰り返し
(・・・) カッコの部分を抜き出し
[・・・] ブラケットの中のいずれか
[^・・・] ブラケットの中のいずれか以外
\s スペース
\S スペース以外
\w 文字[0-9a-Z_]
\W 文字以外[^0-9a-Z_]
\d 数字[0-9]
\D 数字以外[^0-9]

置換

正規表現を使用して置換を行うには、preg_replace関数を使用します。引数は以下になります。

preg_replace("/正規表現指定/", 置換文字列, 対象文字列)

正規表現の指定は検索時と同じように使えます。(・・・)で指定した部分は$1、$2、$3、・・・を指定することで置換文字列に含めることができます。
				
<?php

$str = " 123abc4567";

echo "preg_replace関数で置換します。";
echo "<br /><br />";

echo "preg_replace(\"/\D+/\", \"-\", $str)<br />";
echo preg_replace("/\D+/", "-", $str);

echo "<br /><br />";

echo "preg_replace(\"/([23]+).*?(\d+)/\", \"$2+$1\", $str)<br />";
echo preg_replace("/([23]+).*?(\d+)/", "$2+$1", $str);

?>


			
実行イメージ



ページのトップへ戻る