preg_matchのデリミタで使用可能な文字について考える。
preg_matchのデリミタとは
preg_matchのデリミタっていうのは、以下の緑色の部分。
preg_match(‘/^\w+$/‘, $hoge);
/(スラッシュ)の部分ですな。
区切り文字のことですな。
preg_matchでよく使われるデリミタ3つ
preg_matchでよく使われるデリミタは、ググると3つあった。
- /(スラッシュ)
- #(井桁|ナンバー|ハッシュ)
- ~(チルダ)
/#~以外に使えるデリミタ
PHP: デリミタ - Manual
PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
英数字、バックスラッシュ、空白文字以外の任意の文字をデリミタとして使うことができます。
公式マニュアルによると、ほぼなんでも使えるっぽいですな。
! (ビックリマーク|エクスクラメーション)が使われてた
仕事で、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 ) )
問題なく使えた。
デリミタが/の場合と、
デリミタが!の場合で、
結果が同じだったので。
コメント