PHPで特定の文字列を含む配列要素を検索する方法【preg_match()の使い方】
はじめに
PHPでは、配列の中から特定の文字列を含む要素だけを取り出したい場面がよくあります。例えば、次のような配列があったとしましょう。
$subject = array('JavaScript', 'Java', 'PHP language', 'Python Language');この配列から、「Language」という文字列を含む値だけを取得したい場合を考えてみます。
$valueToSearch = 'Language';
preg_match()を使った文字列検索
このような部分一致の検索を行うには、PHPのpreg_match()関数を使用します。preg_match()は、正規表現パターンに一致するかどうかを判定する関数です。大文字・小文字を区別せずに検索したい場合は、パターンの末尾に「i」フラグ(/i)を付けることで対応できます。
サンプルコード
<!DOCTYPE html>
<html>
<body>
<?php
$subject = array('JavaScript', 'Java', 'PHP language', 'Python Language');
$valueToSearch = 'Language';
$result = array();
foreach ($subject as $t => $value) {
if (preg_match("/\b$valueToSearch\b/i", $value)) {
$result[$t] = $value;
}
}
print_r($result);
?>
</body>
</html>コードのポイント
- \b(単語境界):「Language」が独立した単語として含まれる場合のみマッチさせます。これにより、意図しない部分一致を防ぐことができます。
- /i フラグ:大文字・小文字を区別せずに検索します。そのため「language」でも「Language」でもマッチします。
- foreach ループ:配列の各要素を順番にチェックし、マッチした要素だけを元のキー(インデックス)とともに $result 配列へ格納しています。
実行結果
上記のコードを実行すると、次の出力が得られます。
Array ( [2] => PHP language [3] => Python Language )
「JavaScript」と「Java」には「Language」という単語が含まれていないため除外され、キー「2」の「PHP language」とキー「3」の「Python Language」だけが結果として抽出されました。
まとめ
配列から特定の文字列を含む要素を検索するには、foreachループとpreg_match()を組み合わせるのがシンプルで効果的です。より柔軟な条件で絞り込みたい場合は、array_filter()やstripos()など他の関数を組み合わせる方法もありますので、用途に応じて使い分けるとよいでしょう。
-
JavaScriptで文字列を検索する方法【search()メソッドの使い方を解説】
JavaScriptで文字列を検索する方法 JavaScriptで文字列の中から特定の文字列を探すには、search()メソッドを使用します。このメソッドは、引数に渡した文字列(または正規表現)が対象の文字列内で最初に一致した位置(インデックス)を返し、見つからなかった場合は -1 を返します。 以下は、JavaScriptで文字列を検索するサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" />
-
JavaScript配列で要素を検索する方法を徹底解説!find()メソッドの使い方
JavaScriptで配列の中から特定の要素を検索したい場面は非常に多くあります。本記事では、最もよく使われるfind()メソッドを中心に、実際に動作するサンプルコードとともに分かりやすく解説します。 find()メソッドとは find()メソッドは、配列の各要素に対して指定したテスト関数(コールバック関数)を実行し、条件を満たした最初の要素の値を返します。条件に一致する要素が存在しない場合は undefined を返します。 基本構文 arr.find(callback(element[, index[, array]])[, thisArg]) callback: 各要素をテストする関数