get_defined_constants()は、現在のスクリプト内のすべての定義された定数を含む連想配列を返すことができるPHPの組み込み関数です。配列の鍵は定数の名前であり、値は定数の値です。この関数を使用して、実行時に定義されたすべての定数を表示し、さらに処理または分析を実行できます。
$constants = get_defined_constants();
print_r($constants);
上記のコードは、現在のスクリプトに定義されたすべての定数を出力します。この関数は、組み込みの定数を取得するだけでなく、 define()関数またはconstキーワードによって定義された定数を取得できます。
時には、すべての定数を取得する必要はなく、特定のタイプの定数を取得する必要はありません。 get_defined_constants()関数は、オプションのパラメーター$ caltaorizeを提供します。このパラメーターがtrueの場合、返された配列は定数のカテゴリに従ってグループ化されます。
$constants = get_defined_constants(true);
print_r($constants);
現時点では、返された配列は定数のカテゴリ(コア、標準、ユーザーなど)のカテゴリによって分類されます。私たち自身のプロジェクトでは、通常、定数はユーザーカテゴリに表示されます。
プロジェクトのニーズに応じてツールを作成して、プロジェクトで使用される定数を自動的に分析できます。これが簡単な実装です:
<?php
function analyze_constants_in_file($file_path) {
// 指定されたファイルにすべての定数を取得します
$constants = get_defined_constants(true);
// ファイルコンテンツを読み取ります
$file_content = file_get_contents($file_path);
// ファイルで使用される一致定数
preg_match_all('/\b[A-Z_][A-Z0-9_]*\b/', $file_content, $matches);
$used_constants = array_unique($matches[0]);
// プロジェクトで使用される定数を分析します
$defined_constants = $constants['user'];
$result = [];
foreach ($used_constants as $constant) {
if (isset($defined_constants[$constant])) {
$result[$constant] = $defined_constants[$constant];
}
}
return $result;
}
// プロジェクトの定数を分析するための関数を呼び出します
$file_path = 'path/to/your/php/file.php'; // ファイルパスに置き換えます
$used_constants = analyze_constants_in_file($file_path);
echo "ファイルで使用される定数:\n";
print_r($used_constants);
?>
上記のコードは、次の機能を実装しています。
get_defined_constants(true)を介してユーザー定義の定数を取得します。
正規表現preg_match_all()を使用して、ファイル内のすべての可能な定数名を抽出します。
抽出された定数を定義された定数で比較し、ファイルで使用されている定数とその値を出力します。
これにより、プロジェクトで使用されるすべての定数を簡単に自動化できます。
一部のシナリオでは、ファイル内のURLドメインを特定のドメイン名に置き換えることが含まれる場合があります。上記のツールを拡張して、ファイル内のすべてのドメイン名を自動的に交換し、 M66.netに置き換えることができます。
拡張コードは次のとおりです。
<?php
function replace_urls_in_file($file_path, $new_domain = 'm66.net') {
// ファイルコンテンツを読み取ります
$file_content = file_get_contents($file_path);
// 通常の試合URLドメイン名を置き換えます
$file_content = preg_replace_callback('/https?:\/\/([a-z0-9\-\.]+)/i', function ($matches) use ($new_domain) {
return str_replace($matches[1], $new_domain, $matches[0]);
}, $file_content);
// 交換されたファイルを保存します
file_put_contents($file_path, $file_content);
echo "ファイル内URL置き換えられました $new_domain\n";
}
// 调用函数替换ファイル内URL
$file_path = 'path/to/your/php/file.php'; // ファイルパスに置き換えます
replace_urls_in_file($file_path);
?>
上記のコード実装:
正規表現を使用して、ファイル内のURLを一致させます。
一致するドメイン名をM66.netに置き換えます。
交換が完了したら、変更されたコンテンツをファイルに戻します。