PREG_GREPは、PHPで非常に有用な機能であり、正規表現に基づいて配列内の要素をろ過および一致させます。配列があり、正規表現ルールに一致する要素を除外したい場合、 preg_grepは非常に効率的な選択です。
この記事では、 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_invertとpreg_grep_arrayです。
preg_grepは、正規式に一致するすべての要素を含む新しい配列を返します。正規表現と一致する要素がない場合、空の配列が返されます。
いくつかの文字列を含む配列があるとします。番号を含むすべての文字列を除外したいと考えています。 preg_grep関数を使用して、正規表現と協力できます。
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple123
[</span><span><span class="hljs-meta">2</span></span><span>] => cherry45
)
</span></span>
この例では、 preg_grep関数は数字を含む2つの文字列を返します。
正規表現に適合しない要素を取得したい場合は、 preg_grep_invertフラグを使用できます。これにより、関数は正規表現と一致しない要素を返します。
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">1</span></span><span>] => banana
[</span><span><span class="hljs-meta">3</span></span><span>] => date
)
</span></span>
preg_grep_invertによって、番号を含む文字列が返されます。
返された結果がアレイのキーを保持するようにしたい場合は、 preg_grep_arrayフラグを使用できます。これは、元の配列インデックスを維持する必要がある場合に非常に便利です。
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple123
[</span><span><span class="hljs-meta">2</span></span><span>] => cherry45
)
</span></span>
このようにして、返された配列には元の配列のキーが含まれます。
アレイ内の要素に複数の通常のルールを適用する場合は、複数の正規表現を一緒に使用できます。
たとえば、最初に数値を含むすべての要素を一致させ、次に文字列を6を超える長さと一致させることができます。
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
出力:
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => apple123
[</span><span><span class="hljs-meta">4</span></span><span>] => watermelon321
)
</span></span>
この例では、最初に数値を含む要素をフィルタリングし、次に結果を2回目にフィルタリングして、長さが6を超える文字列を見つけます。
preg_grepは、正規表現に基づいて配列内の要素をフィルタリングするのに適した非常に強力な関数です。正規表現とフラグオプションを使用することにより、さまざまな複雑なマッチングおよびフィルタリングのニーズを簡単に実現できます。この記事の紹介が、 preg_grepの使用をよりよく理解し、PHPプログラミングの効率を改善できることを願っています。