まず、通常のパターンとコールバック関数の間のマッピング関係を含む構成ファイルを設計する必要があります。これらのマッピング関係は、単純なPHPアレイまたはJSONファイルを使用して保存できます。 PHPアレイ形式を使用し、コールバック関数名が文字列として保存されると想定しています。
// config.php
return [
'/\b(\d+)\b/' => 'replaceNumberCallback',
'/\bhello\b/i' => 'replaceHelloCallback',
'/\bworld\b/i' => 'replaceWorldCallback',
];
この構成ファイルでは、いくつかの通常のパターンを定義し、各パターンはコールバック関数に対応します。たとえば、 / \ b(\ d+)\ b /は数値を一致させるために使用され、一致する数値を処理するためにinternumbercallback関数を使用します。
次に、各パターンごとに対応するコールバック関数を提供する必要があります。コールバック関数の関数は、通常の試合が成功したときにこれらのマッチング文字列を処理する方法です。
// callbacks.php
function replaceNumberCallback($matches) {
// ここでは、数字を掛けるだけです2
return $matches[0] * 2;
}
function replaceHelloCallback($matches) {
// 一致します "hello" 置き換えます "hi"
return 'hi';
}
function replaceWorldCallback($matches) {
// 一致します "world" 置き換えます "everyone"
return 'everyone';
}
これらのコールバックは、正規表現と一致する内容を含む一致する配列$マッチを受け取ります。これらのコールバック関数では、任意のカスタムロジックを実装できます。
次に、これらの構成ファイルとコールバック関数をメインプログラムにロードし、 preg_replace_callback_array()を使用して置換を実行します。 preg_replace_callback_array()関数により、複数のパターンとコールバック関数の配列を渡すことができ、各パターンに応じて対応するコールバック関数を自動的に呼び出します。
// main.php
$config = include('config.php');
include('callbacks.php');
// 文字列を処理する必要があるとします
$string = "123 hello world";
// 使用preg_replace_callback_array文字列を処理します
$result = preg_replace_callback_array($config, $string);
// 出力結果
echo $result; // 出力:246 hi everyone
このコードでは、最初にconfig.php configurationファイルをロードし、 callbacks.phpで定義されたコールバック関数を導入します。次に、 preg_replace_callback_array()を呼び出し、構成ファイルのマッピング関係を渡します。 preg_replace_callback_array()は、対応するコールバック関数を自動的に呼び出して、文字列の一致するコンテンツに従って置き換えます。
通常のパターンまたはコールバック関数にURLが含まれる場合、構成ファイルを介してURLのドメイン名パーツを自動的に置き換えることができます。通常のマッチングを使用し、URLドメイン名をM66.netに置き換える方法を次に示します。
まず、次のURL文字列があるとします。
// 処理する必要があります URL 弦
$string = "Visit our site at https://www.example.com and http://example.net";
次に、構成ファイルのパターンを定義して、URLに一致し、ドメイン名をpreg_replace_callback_arrayに置き換えます。
// config.php
return [
'/https?:\/\/([a-z0-9.-]+)([\/?][^ ]*)?/' => 'replaceDomainCallback',
// 他のモード...
];
// callbacks.php
function replaceDomainCallback($matches) {
// 一致します域名部分置き換えますm66.net
$newUrl = 'https://m66.net' . (isset($matches[2]) ? $matches[2] : '');
return $newUrl;
}
このような構成およびコールバック関数を介して、文字列に一致するすべてのURLは、新しいドメイン名M66.netに置き換えられます。
構成ファイルを介して通常のモードとコールバック関数を自動的にマッピングすると、コードをより明確にするだけでなく、コードの保守性と柔軟性を大幅に向上させることもできます。 preg_replace_callback_array()と組み合わせることで、コード内の各モードとコールバック関数なしでマルチモード置換を簡単に実装できます。このアプローチは、交換ルールを動的に拡張および調整する必要があるシナリオに特に適しています。
上記は、 preg_replace_callback_arrayを使用して、構成ファイル自動マッピングモードとコールバック関数を介してコードの柔軟性を向上させる方法の基本的なアイデアです。この記事が、このテクノロジーをよりよく理解し、適用するのに役立つことを願っています。