preg_matchのデリミタで使用可能な文字 | クズリーマンのカス備忘録

preg_matchのデリミタで使用可能な文字

php-logo php
スポンサーリンク

 

preg_matchのデリミタで使用可能な文字について考える。

 

preg_matchのデリミタとは

preg_matchのデリミタっていうのは、以下の緑色の部分。

preg_match(‘/^\w+$/‘, $hoge);

 

/(スラッシュ)の部分ですな。

 

区切り文字のことですな。

 

preg_matchでよく使われるデリミタ3つ

preg_matchでよく使われるデリミタは、ググると3つあった。

  • /(スラッシュ)
  • #(井桁|ナンバー|ハッシュ)
  • ~(チルダ)

 

 

/#~以外に使えるデリミタ

PHP: デリミタ - Manual

 英数字、バックスラッシュ、空白文字以外の任意の文字をデリミタとして使うことができます。

公式マニュアルによると、ほぼなんでも使えるっぽいですな。

 

! (ビックリマーク|エクスクラメーション)が使われてた

 

仕事で、preg_matchのデリミタに! (ビックリマーク|エクスクラメーション)が使われてた。

公式マニュアルによると、「空白文字以外の任意の文字」に当てはまるので、これも使えるはず。

 

試してみた。↓

 

<?php
preg_match('/(foo)(bar)(baz)/', 'foobarbaz', $matches, PREG_OFFSET_CAPTURE);
print_r($matches);


echo '<br><br>';

preg_match('!(foo)(bar)(baz)!', 'foobarbaz', $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>

 

結果:

 

Array ( [0] => Array ( [0] => foobarbaz [1] => 0 ) [1] => Array ( [0] => foo [1] => 0 ) [2] => Array ( [0] => bar [1] => 3 ) [3] => Array ( [0] => baz [1] => 6 ) )

Array ( [0] => Array ( [0] => foobarbaz [1] => 0 ) [1] => Array ( [0] => foo [1] => 0 ) [2] => Array ( [0] => bar [1] => 3 ) [3] => Array ( [0] => baz [1] => 6 ) )

 

 

問題なく使えた。

 

 

デリミタが/の場合と、

デリミタが!の場合で、

結果が同じだったので。

 

 

コメント

タイトルとURLをコピーしました