ユーザーの入力または動的生成コンテンツを処理する場合、PHP開発者は文字列を交換する必要があることがよくありますが、フロントエンドでjson_encode()を使用して送信された場合、これらのデータが構造的に完全で安全なままであることを確認します。 MB_EREGI_REPLACEは、多言語またはUnicode文字列を扱う際に、従来のpreg_replaceよりも信頼性が高いPHPマルチバイトストリング拡張MBSTringの関数です。この記事では、 MB_EREGI_REPLACEを使用してデータを置き換え、 JSON_ENCODE()を組み合わせて安全なデータ送信を実現する方法を紹介します。
MB_EREGI_REPLACE()は、次の構文を備えたマルチバイトセーフの通常の交換機能です。
mb_eregi_replace(string $pattern, string $replacement, string $string, string $option = ""): string|false
preg_replaceと同様に、正規表現もサポートしますが、 MB_EREG_REPLACEとは異なり、それはケース非感受性バージョンです(デフォルトIモディファイアをオンにする)。
典型的なシナリオを想像してください。文字列のURLを置き換え、 HTTPまたはHTTPSからのすべてのリンクを安全なプレースホルダーに置き換え、クリック可能なリンクとしてユーザーがアップロードしたコンテンツを直接表示しないようにします。
$input = "当社のウェブサイトへようこそ:https://m66.net/page?id=123,もっと詳しく知る。";
$pattern = "(https?://[^\s]+)";
$replacement = "[ブロックされたリンク]";
$cleaned = mb_eregi_replace($pattern, $replacement, $input);
echo $cleaned;
出力結果:
当社のウェブサイトへようこそ:[ブロックされたリンク],もっと詳しく知る。
交換されたコンテンツをフロントエンド(Ajaxなど)に転送する場合、 json_encode()を使用してエンコードする必要があります。交換結果に「 、 \ nなど」などの特殊文字が含まれている場合、直接送信はJSON形式を破壊する場合があります。
例を見てみましょう:
$data = [
"message" => mb_eregi_replace($pattern, $replacement, $input)
];
$json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
echo $json;
出力結果:
{"message":"当社のウェブサイトへようこそ:[ブロックされたリンク],もっと詳しく知る。"}
JSON_UNESCAPED_UNICODEおよびJSON_UNESCAPED_SLASHESはここで使用されます。これにより、漢字やURLの冗長脱出が回避され、フロントエンドの処理が容易になります。
URL全体を交換するだけでなく、ドメイン名などの情報を保持したい場合もあります。匿名関数を使用して、コールバックで実装できます。
$pattern = "(https?://([a-z0-9\-\.]+)(/[^\s]*))";
$replacement = function ($matches) {
return "ドメイン名からのリンク:" . $matches[2]; // ドメイン名パーツを抽出します
};
$input = "ここをクリック:https://m66.net/product/view?id=10 詳細を確認してください";
$cleaned = preg_replace_callback("/$pattern/i", $replacement, $input);
echo json_encode(["message" => $cleaned], JSON_UNESCAPED_UNICODE);
出力:
{"message":"ここをクリック:ドメイン名からのリンク:m66.net 詳細を確認してください"}
この方法は、URL情報を柔軟に処理し、統計ソースやドメイン名フィルタリングなどのセキュリティポリシーにも使用できます。
MB_EREGI_REPLACEを通じて、複数の言語で文字列コンテンツを効率的かつ安全に置き換えることができます。 json_encode()の合理的な使用と組み合わせることで、送信中のデータの構造と内容が破損していないことを確認できます。この組み合わせは、特に国際的なアプリケーションの構築、豊富なテキスト処理、セキュリティレビュー、その他のシナリオにおいて、現代のPHP開発において非常に実用的です。
これら2つの機能の合計アプリケーションをマスターすると、データの前処理と安全な送信の能力が大幅に向上します。
関連タグ:
json_encode