UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#269 PHP 正規表現のフラグに関して

記入日:2023-10-04 編集日:2023-10-04

PHP 正規表現のフラグに関して解説をしてみようと思います。

この記事を読むと(約5分)
PHP 正規表現のフラグに関してイメージできます。

PHP 正規表現のフラグ

PHPには正規表現を扱う際に使えるいくつかのフラグがあります。
以下にいくつかの例を挙げながら、それぞれのフラグを解説します。

1. `i` フラグ (大文字小文字を区別しない)

$pattern = '/hello/i';
$string = 'Hello, World!';
if (preg_match($pattern, $string)) {
  echo 'マッチしました!';
} else {
  echo 'マッチしませんでした。';
}
この例では、`/hello/i` という正規表現パターンがあります。`i` フラグは大文字小文字を区別しないことを示します。したがって、このパターンは `Hello` にも `hello` にもマッチします。

2. `m` フラグ (複数行モード)

$pattern = '/^hello/m';
$string = "hello, World!\nHello, Universe!";
if (preg_match($pattern, $string)) {
  echo 'マッチしました!';
} else {
  echo 'マッチしませんでした。';
}
`/hello/m` というパターンは、行の先頭に `hello` があるかどうかをチェックします。`m` フラグは複数行モードを有効にし、`^` が行の先頭を表すことを可能にします。この例では、2行目の `Hello` にはマッチしません。

3. `s` フラグ (ドットが改行を含む)

$pattern = '/hello.s/s';
$string = "hello\nworld";
if (preg_match($pattern, $string)) {
  echo 'マッチしました!';
} else {
  echo 'マッチしませんでした。';
}
`/hello.s/s` パターンは、`hello` の後に任意の文字(改行も含む)が続くパターンを探します。`s` フラグはドット (`.`) を改行を含む全ての文字にマッチさせることを示します。この例では、`hello` の後に改行文字があるので、マッチします。

4. `u` フラグ (UTF-8 モード)

$pattern = '/\p{Han}+/u';
$string = '你好,世界!';
if (preg_match($pattern, $string)) {
  echo 'マッチしました!';
} else {
  echo 'マッチしませんでした。';
}
`/\p{Han}+/u` パターンは、漢字の連続を探します。`u` フラグはUTF-8モードを有効にし、Unicode文字を正しく扱います。この例では、`你好,世界!` に含まれる漢字がマッチします。

これらの例は、異なる状況でどのようにフラグが使われるかを示しています。正規表現のフラグは、パターンがどのように解釈されるかに影響を与えますので、適切に選択することが重要です。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。