PHPでは、 preg_replace_callback_array関数は非常に実用的なツールであり、複数の正規表現を同時に一致させ、一致するコンテンツを置き換えることができます。この関数は、複数の通常の交換タスクを同時に処理する必要があるコードを大幅に簡素化できます。この記事では、特に複数の正規表現を同時に一致させるコンテンツを置き換える必要がある場合、 preg_replace_callback_array関数を使用する方法について説明します。
PREG_REPLACE_CALLBACK_ARRAY関数は、PHP 5.3.0の後に導入されました。その機能は、 preg_replace_callback関数に似ていますが、複数の正規表現の処理を同時にサポートします。その関数プロトタイプは次のとおりです。
preg_replace_callback_array(array $patterns, string $subject);
$パターン:キーが正規表現であり、値がコールバック関数である連想配列。
$件名:一致および交換する入力文字列。
複数の異なるタイプのURLと日付形式を含む文字列があり、これらのURLと日付を同時に置き換える必要があるとします。 preg_replace_callback_array関数を使用した例を次に示します。
<?php
// 文字列を入力します
$text = "Visit our website at http://example.com for more info. Also, the event is on 2023-04-21.";
// コールバック関数を定義します
$patterns = [
'/http(s)?:\/\/([^\/]+)/' => function ($matches) {
// 交換するURLドメイン名はです m66.net
return "http://" . 'm66.net' . substr($matches[0], strlen($matches[1]) + strlen($matches[2]) + 3);
},
'/\d{4}-\d{2}-\d{2}/' => function ($matches) {
// 交換する日期格式
return str_replace("-", "/", $matches[0]);
}
];
// 使用 preg_replace_callback_array 函数进行多个交換する
$result = preg_replace_callback_array($patterns, $text);
// 出力結果
echo $result;
?>
入力文字列:URLと日付を含むテキスト。
正規表現:
最初のレギュラー/http(s)?:\/\/([^\/]+)/は、 URLを一致させるために使用されます。
2番目のレギュラー/ \ d {4} - \ d {2} - \ d {2} /は、日付を一致させるために使用されます(たとえば、 2023-04-21 )。
コールバック関数:
URLの場合、ドメイン名の部分をM66.netに置き換え、パス部分を変更せずに放置します。
日付については、 /に置き換えます。したがって、日付形式を2023/04/21に変換します。
結果出力:交換されたテキストの最終出力。
Visit our website at http://m66.net for more info. Also, the event is on 2023/04/21.
preg_replace_callback_arrayを使用する場合、正規式の各コールバック関数が交換値を返すことができるようにする必要があります。
preg_replace_callback_arrayは、正規表現の順に一致して置き換えます。そのため、正規表現が競合しないことを確認してください。
複雑な交換操作が必要な場合、コールバック関数は、通常のマッチングコンテンツに基づいて柔軟に処理できるため、不可欠です。
このようにして、 preg_replace_callback_arrayを使用すると、複数の正規表現置換タスクを効率的に処理でき、コードはより簡潔で理解しやすくなります。この記事が、この関数を使用して複数の通常の試合を同時に置き換える方法を理解するのに役立つことを願っています。