現在の位置: ホーム> 最新記事一覧> 入力クリーニングと交換のためにMB_EREGI_REPLACE機能をFilter_Var()と組み合わせて使用​​する方法は?

入力クリーニングと交換のためにMB_EREGI_REPLACE機能をFilter_Var()と組み合わせて使用​​する方法は?

M66 2025-06-23

PHPでユーザー入力を処理する場合、入力コンテンツが安全であり、予想される形式に沿っていることを確認することが、開発の重要なリンクです。特に、マルチバイトの文字列処理と潜在的なXSS攻撃の防止では、 MB_EREGI_REPLACE()Filter_Var()の組み合わせは、柔軟で堅牢なソリューションを提供できます。

この記事では、悪いコンテンツの入力を防ぎ、有効なデータを保持するために、これら2つの機能を介してユーザーが提出したデータを効果的にクリーニングおよび交換する方法を示します。


1。関数の紹介

MB_EREGI_REPLACE()

MB_EREGI_REPLACE()は、 eREGI_REPLACE()のマルチバイトバージョンであり、ケースに依存しない通常の交換操作を実行します。 UTF-8エンコーディングをサポートし、中国語またはその他のマルチバイト文字を含む文字列を処理するのに最適です。

 mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $options = null): string

filter_var()

filter_var()は、変数を検証およびクリーニングするためにPHPによって提供されるフィルター関数の1つです。電子メール、URL、IP、その他の形式を確認するために使用でき、潜在的に有害なコードスニペットを削除することもできます。

 filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed

2。実用的なアプリケーションシナリオ

ユーザーがサビされたコメントコンテンツを処理すると、次の手順を完了する必要があります。

  1. 悪い言葉(「ガベージ」、「詐欺師」など)を交換します。

  2. その中の有効なURLアドレスを確認して保持します。

  3. 結果が清潔で安全でユーザーフレンドリーであることを確認してください。

この目標でクリーニングロジックを実装します。


3。サンプルコード

以下は、mb_eregi_replace()filter_var()を組み合わせて使用​​する方法を示す完全な例です。

 <?php
// 元のユーザー入力
$input = "あなたはユーザーをゴミ箱にします,すぐに行きなさいm66.net/spam報告!その上m66.net/Scammerページをご覧ください。";

// ブロックするための語彙(中国語をサポートします)
$badWords = ['ごみ', '詐欺'];

// 敏感な単語をアスタリスクに置き換えます
foreach ($badWords as $word) {
    $pattern = preg_quote($word, '/');
    $input = mb_eregi_replace($pattern, str_repeat('*', mb_strlen($word)), $input);
}

// 抽出するURL確認します,安全なリンクに置き換えます
$input = preg_replace_callback('/(https?:\/\/)?(m66\.net\/[^\s]+)/i', function ($matches) {
    $url = 'http://' . $matches[2]; // に追加http検証用のプレフィックス
    if (filter_var($url, FILTER_VALIDATE_URL)) {
        return '<a href="' . htmlspecialchars($url) . '" target="_blank">' . htmlspecialchars($url) . '</a>';
    }
    return '';
}, $input);

// 出力結果
echo $input;
?>

4。出力の例

ユーザーの入力が次のと仮定します。

 あなた**ユーザー,すぐに行きなさい<a href="http://m66.net/spam" target="_blank">http://m66.net/spam</a>報告!その上<a href="http://m66.net/****" target="_blank">http://m66.net/****</a>ページもチェックしてください。