PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで特定の値を基準に文字列を分割・抽出する方法|preg_match_all()の使い方

文字列を特定の値(キーワード)を基準に分割したい場合は、preg_match_all() 関数を使用します。この関数は、指定した正規表現パターンに一致するすべての箇所を配列として抽出できるため、区切り文字ではなく「取り出したい語句」があらかじめ決まっているケースに特に便利です。

ここでは、次のように複数の単語が連結された文字列を例に考えます。

$values = 'javamysqlphpmongodbpythonspringhibernatephp';

この文字列から、以下の3つのキーワードを抜き出して分割することを目指します。

java
hibernate
php

サンプルコード

PHPコードは以下のとおりです。正規表現 /(java|hibernate|php)/ をパターンとして渡し、一致したすべてのキーワードを取得しています。

<!DOCTYPE html>
<html>
<body>
<?php
$values = 'javamysqlphpmongodbpythonspringhibernatephp';
$afterSpliting = preg_match_all("/(java|hibernate|php)/", $values, $result);
print_r($result);
?>
</body>
</html>

実行結果

このコードを実行すると、次のような出力が得られます。

Array (
[0] => Array
(
[0] => java
[1] => php
[2] => hibernate
[3] => php
)
[1] => Array
(
[0] => java
[1] => php
[2] => hibernate
[3] => php
)
)

解説のポイント

  • 戻り値: preg_match_all() は、マッチした件数(この例では4件)を返します。
  • [0] の配列: パターン全体に一致した文字列が格納されます。
  • [1] の配列: 最初のキャプチャグループ(括弧内の java|hibernate|php)に一致した部分が格納されます。

なお、逆に「区切りとなる文字や記号」が明確な場合は、preg_split() を使うとよりシンプルに分割できます。目的に応じて両者を使い分けるとよいでしょう。

  1. MongoDBで特定の文字列を使ってフィールドのすべての値を一括更新する方法

    MongoDBでフィールドのすべての値を一括更新する方法MongoDBのコレクション内に存在するすべてのドキュメントの特定フィールドを、同じ文字列でまとめて更新したい場合があります。そのようなときは、update()メソッドにオプション「multi: true」を指定します。この記事では、実際のコマンド例をもとに、手順をわかりやすく解説します。1. サンプルコレクションの作成まずはinsertOne()メソッドを使って、テスト用コレクション「demo720」に複数のドキュメントを挿入します。> db.demo720.insertOne({SubjectName:MySQL}); {

  2. PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方

    本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用