現在の位置: ホーム> 最新記事一覧> preg_grep関数を使用して、正規表現に準拠する配列要素をフィルタリングおよび一致させる方法は?詳細なステップ分析

preg_grep関数を使用して、正規表現に準拠する配列要素をフィルタリングおよび一致させる方法は?詳細なステップ分析

gitbox 2025-06-19

PREG_GREPは、PHPで非常に有用な機能であり、正規表現に基づいて配列内の要素をろ過および一致させます。配列があり、正規表現ルールに一致する要素を除外したい場合、 preg_grepは非常に効率的な選択です。

この記事では、 preg_grep関数の使用を詳細に紹介し、特定の例を使用して、誰もがその機能をよりよく理解できるようにします。

1。preg_grep関数の基本的な構文

<span><span><span class="hljs-title function_ invoke__">preg_grep</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$input</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$flags</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $パターン:これは正規表現であり、PHPはこの規則性に基づいて配列の要素と一致します。

  • $入力:フィルタリングする配列。

  • $フラグ:返された配列タイプを決定するオプションのフラグパラメーター。一般的に使用されるフラグは、 preg_grep_invertpreg_grep_arrayです。

2。preg_grep関数の返品値

preg_grepは、正規式に一致するすべての要素を含む新しい配列を返します。正規表現と一致する要素がない場合、空の配列が返されます。

3.例を使用してください

3.1基本的な使用

いくつかの文字列を含む配列があるとします。番号を含むすべての文字列を除外したいと考えています。 preg_grep関数を使用して、正規表現と協力できます。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$input</span></span><span> = [</span><span><span class="hljs-string">"apple123"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry45"</span></span><span>, </span><span><span class="hljs-string">"date"</span></span><span>];

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\d+/'</span></span><span>; </span><span><span class="hljs-comment">// 数字を含む文字列を一致させます</span></span><span>

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_grep</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$input</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

出力:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; apple123
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; cherry45
)
</span></span>

この例では、 preg_grep関数は数字を含む2つの文字列を返します。

3.2 preg_grep_invertフラグを使用した逆フィルタリング

正規表現に適合しない要素を取得したい場合は、 preg_grep_invertフラグを使用できます。これにより、関数は正規表現と一致しない要素を返します。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$input</span></span><span> = [</span><span><span class="hljs-string">"apple123"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry45"</span></span><span>, </span><span><span class="hljs-string">"date"</span></span><span>];

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\d+/'</span></span><span>; </span><span><span class="hljs-comment">// 数字を含む文字列を一致させます</span></span><span>

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_grep</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$input</span></span><span>, PREG_GREP_INVERT);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

出力:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; banana
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; date
)
</span></span>

preg_grep_invertによって、番号を含む文字列が返されます。

3.3 preg_grep_arrayフラグを使用して、配列のキーを取得します

返された結果がアレイのキーを保持するようにしたい場合は、 preg_grep_arrayフラグを使用できます。これは、元の配列インデックスを維持する必要がある場合に非常に便利です。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$input</span></span><span> = [</span><span><span class="hljs-string">"apple123"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry45"</span></span><span>, </span><span><span class="hljs-string">"date"</span></span><span>];

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\d+/'</span></span><span>; </span><span><span class="hljs-comment">// 数字を含む文字列を一致させます</span></span><span>

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_grep</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$input</span></span><span>, PREG_GREP_ARRAY);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

出力:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; apple123
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; cherry45
)
</span></span>

このようにして、返された配列には元の配列のキーが含まれます。

4。高度な使用法:複数の通常のマッチング

アレイ内の要素に複数の通常のルールを適用する場合は、複数の正規表現を一緒に使用できます。

たとえば、最初に数値を含むすべての要素を一致させ、次に文字列を6を超える長さと一致させることができます。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$input</span></span><span> = [</span><span><span class="hljs-string">"apple123"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"cherry45"</span></span><span>, </span><span><span class="hljs-string">"date"</span></span><span>, </span><span><span class="hljs-string">"watermelon321"</span></span><span>];

</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/\d+/'</span></span><span>; </span><span><span class="hljs-comment">// 数字を含む文字列を一致させます</span></span><span>

</span><span><span class="hljs-comment">// 使用 preg_grep 番号を含む要素を除外します</span></span><span>
</span><span><span class="hljs-variable">$matched</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_grep</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$input</span></span><span>);

</span><span><span class="hljs-comment">// 長さを除外します6要素</span></span><span>
</span><span><span class="hljs-variable">$long_words</span></span><span> = </span><span><span class="hljs-title function_ invoke__">preg_grep</span></span><span>(</span><span><span class="hljs-string">'/^.{7,}$/'</span></span><span>, </span><span><span class="hljs-variable">$matched</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$long_words</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

出力:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; apple123
    [</span><span><span class="hljs-meta">4</span></span><span>] =&gt; watermelon321
)
</span></span>

この例では、最初に数値を含む要素をフィルタリングし、次に結果を2回目にフィルタリングして、長さが6を超える文字列を見つけます。

5。概要

preg_grepは、正規表現に基づいて配列内の要素をフィルタリングするのに適した非常に強力な関数です。正規表現とフラグオプションを使用することにより、さまざまな複雑なマッチングおよびフィルタリングのニーズを簡単に実現できます。この記事の紹介が、 preg_grepの使用をよりよく理解し、PHPプログラミングの効率を改善できることを願っています。