現在の位置: ホーム> 最新記事一覧> preg_replace_callback_arrayとarray_mapを使用して複雑なテキスト処理を実装します

preg_replace_callback_arrayとarray_mapを使用して複雑なテキスト処理を実装します

M66 2025-06-02

PHPでは、 preg_replace_callback_arrayarray_mapは、複雑なテキスト操作を処理するために組み合わせて使用​​できる2つの非常に強力なツールです。 preg_replace_callback_arrayを使用すると、パターンセットに基づいて交換操作を実行でき、各マッチングパーツでコールバック関数を実行できます。 array_mapは、配列の各要素にコールバック関数を適用できます。

この記事では、例を使用して、これら2つの機能を組み合わせて使用​​して複雑なテキスト処理を実現する方法を示します。

シーンの説明

複数のURLとテキストを含む文字列があるとしたら、ドメイン名をM66.NETに置き換えるなど、これらのURLでいくつかの処理を行い、文字列のいくつかの特別なタグ( [URL]など)のカスタム交換などを行う必要があります。これは、クローラーやテキストクリーニングシナリオなど、一般的な要件です。

実装手順

まず、2つの主要な機能を定義する必要があります。

  1. 文字列の特定のパターンをpreg_replace_callback_arrayに置き換えます。

  2. array_mapを使用して、交換された結果のさらに処理または変換を実行します。

特定の実装を見てみましょう。

 <?php

// 1. 交換する必要があるコールバック関数を定義します
$callback_array = [
    // マッチ URL ドメイン名を置き換えます
    '/https?:\/\/([\w\-]+\.[\w\-]+)/' => function($matches) {
        return 'https://' . 'm66.net';
    },
    // マッチ [url] タグとプロセス
    '/\[url\](.*?)\[\/url\]/' => function($matches) {
        return '<a href="' . $matches[1] . '">' . $matches[1] . '</a>';
    }
];

// 2. 元のテキスト
$text = "これはテスト文字列です,いくつかを含めます URL: https://example.com そして別のリンク:[url]https://example2.com[/url]。";

// 3. 使用 preg_replace_callback_array 交換します
$processed_text = preg_replace_callback_array($callback_array, $text);

// 4. 使用 array_map 処理配列(この例は、単にテキストを大文字に変換します)
$processed_text_array = array_map('strtoupper', explode(' ', $processed_text));

// 5. 処理されたテキストを文字列にマージします
$final_text = implode(' ', $processed_text_array);

// 最終結果を出力します
echo $final_text;
?>

コード解析

  1. preg_replace_callback_array :この関数は、関連するアレイを最初のパラメーターとして受け入れ、各配列のキーは正規表現であり、値はコールバック関数です。このコールバック関数は、一致するテキストで処理を実行します。

    • この例では、2つのパターンがあります。

      • URLの交換https://またはhttp://で始まるURLを正規表現を介して一致させ、そのドメイン名をm66.netに置き換えます。

      • URLタグの交換[URL][/url]タグの間のURLを一致させ、HTMLハイパーリンク形式に変換します。

  2. array_map :この関数は、指定されたコールバック関数を配列の各要素に適用します。ここでは、エクスプロイトArray_mapを使用して、各単語を大文字に変換することによって、処理されたテキストを単語に分割するだけです。最後に、それらを内蔵して文字列に戻します。

出力結果

入力テキストは次のとおりです。

 これはテスト文字列です,いくつかを含めます URL: https://example.com そして別のリンク:[url]https://example2.com[/url]。

preg_replace_callback_arrayおよびarray_mapで処理した後、出力の結果は次のとおりです。

 これはです 1つ テスト 弦,含む いくつかの URL: https://m66.net そして 另1つ リンク:<a href="https://example2.com">https://example2.com</a>。

要約します

preg_replace_callback_arrayarray_mapを使用して、特にURLまたはタグ形式を扱う場合、非常に複雑なテキスト処理を実装できます。この方法は効果的であるだけでなく、柔軟性もあり、要件に応じて異なる処理ロジックを拡張できます。このアプローチは、多くのテキストを処理する必要がある場合にうまく機能します。

うまくいけば、この簡単な例を通して、これらの2つの機能がどのように使用されているかをよりよく理解し、実際の開発に適用できることを願っています。