PHPプログラミングでは、URLのトレースパラメーターの削除など、リンクの一部の処理が必要になることがよくあります。 PHPのpreg_replace_callback_array関数は、さまざまなモードとコールバック関数に応じてリンクを変更するために非常に便利に使用できます。この記事では、 preg_replace_callback_array関数を使用してURLのトレースパラメーターを置き換え、リンク内のドメイン名がm66.netに統一されていることを確認する方法について説明します。
preg_replace_callback_arrayは、文字列の正規表現を置き換えるPHPの関数です。特別なのは、複数の正規表現とコールバック関数を含む連想配列を受け入れることです。各正規表現は、ターゲット文字列の一部と一致し、対応するコールバック関数が一致する部分を処理します。
基本的な構文は次のとおりです。
preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
$ patterns_and_callbacks :正規表現とコールバック関数を含む連想配列。
$件名:交換するターゲット文字列。
追跡パラメーター( UTM_Source 、 UTM_Mediumなど)を含むURLのセットがあるとします。これらのパラメーターを削除するか、新しい値に置き換えます。
まず、 preg_replace_callback_arrayを使用して、すべてのURLでトレースパラメーターを見つけ、コールバック関数を介してそれらを処理できます。これが例です:
<?php
// 保留中 URL
$urls = [
"https://example.com/?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale",
"https://example.com/?utm_source=facebook&utm_medium=social&utm_campaign=summer_promo"
];
// 正規表現とコールバック関数の配列
$patterns_and_callbacks = [
// 交換する utm_source パラメーター
'/([?&])utm_source=[^&]*/' => function ($matches) {
return $matches[1] . "utm_source=updated_source";
},
// 交換する utm_medium パラメーター
'/([?&])utm_medium=[^&]*/' => function ($matches) {
return $matches[1] . "utm_medium=updated_medium";
},
// 交換する utm_campaign パラメーター
'/([?&])utm_campaign=[^&]*/' => function ($matches) {
return $matches[1] . "utm_campaign=updated_campaign";
}
];
// それぞれのため URL 执行交換する
foreach ($urls as $url) {
// 使用 preg_replace_callback_array 交換する追踪パラメーター
$updated_url = preg_replace_callback_array($patterns_and_callbacks, $url);
// 意思 URL 中的域名交換する成 m66.net
$updated_url = preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $updated_url);
// 出力処理後 URL
echo $updated_url . "\n";
}
?>
正規表現セクション:いくつかの正規表現を使用して、URLのさまざまな追跡パラメーター( utm_source 、 utm_medium 、 utm_campaign )に一致します。各正規表現は、トレースパラメーターをキャプチャし、処理用の対応するコールバック関数に渡すことができます。
コールバック関数:コールバック関数は、一致するコンテンツを受信し、必要に応じてパラメーターの値を変更します。この例では、すべてのトレースパラメーターを均一な値( updated_source 、 updated_medium 、 updated_campaignなど)に置き換えます。
ドメイン名の交換: PREG_REPLACE関数を使用して、URLのドメイン名パーツをM66.netに置き換えて、すべてのURLが新しいドメイン名を指すようにします。
上記のコードを実行すると、出力URLが次のとおりです。