Web開発では、フォームデータのクリーニングと検証は、データのセキュリティと精度を確保するための重要なステップです。 PHPのarray_filter関数は、配列内の要素をフィルタリングするためのシンプルで効率的な方法を提供します。 array_filterとカスタムコールバック関数を組み合わせることにより、データを処理する前にユーザーが送信したフォームデータをクリーンアップして確認できます。
array_filter関数は、配列内の要素をフィルタリングし、コールバック関数によってテストされた要素を含む新しい配列を返すために使用されます。基本的な構文は次のとおりです。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$配列:フィルターする入力配列。
$ callback :配列要素をフィルタリングするために使用されるコールバック関数。コールバック関数が提供されていない場合、値がfalse ( 0 、 null 、 false 、空の文字列""など)の要素がデフォルトで削除されます。
$モード:フィルタリング方法を指定します。通常、設定する必要はありません。デフォルト値0を使用してください。
ユーザー名、電子メール、携帯電話番号などの情報をユーザーが送信したフォームがあるとします。このデータをクリーンアップし、不必要なスペースや違法なキャラクターを削除したいと考えています。
<?php
// ユーザーがサビされたデータ
$formData = [
'username' => ' john_doe ',
'email' => ' john.doe@m66.net ',
'phone' => ' 123-456-7890 ',
'address' => ' '
];
// データ機能をクリーンアップします:スペースと違法な文字を削除します
$cleanData = array_map('trim', $formData);
// クリーニングされたデータを出力します
print_r($cleanData);
?>
上記のコードでは、 array_map( 'trim'、$ formdata)は、各フォームフィールド値をトリム関数を介して値フィールド値の前後に削除します。データをさらにクリーニングおよび検証する場合は、 Array_Filterを使用して要件を満たさないフィールドを削除できます。
フォームデータの確認は、要件を満たすことを確認するための重要なステップです。たとえば、ユーザー名にスペースがないこと、電子メール形式が正しい、または電話番号が有効であることを確認することをお勧めします。
<?php
// ユーザーがサビされたデータ
$formData = [
'username' => ' john_doe ',
'email' => ' john.doe@m66.net ',
'phone' => ' 123-456-7890 ',
'address' => ' '
];
// データをクリーンアップします:余分なスペースを削除します
$cleanData = array_map('trim', $formData);
// データを確認します:使用array_filter違法データをフィルタリングします
$validData = array_filter($cleanData, function($value, $key) {
switch ($key) {
case 'username':
return preg_match('/^\S+$/', $value); // ユーザー名にスペースがないことを確認してください
case 'email':
return filter_var($value, FILTER_VALIDATE_EMAIL); // メールボックス形式を確認します
case 'phone':
return preg_match('/^\d{3}-\d{3}-\d{4}$/', $value); // 携帯電話番号形式を確認します
default:
return !empty($value); // 他のフィールドは空にすることはできません
}
}, ARRAY_FILTER_USE_BOTH);
// 有効なデータを出力します
print_r($validData);
?>
この例では、callback関数と組み合わせてarray_filterを使用して、各フォームフィールドを確認します。コールバック関数は、各フィールドのコンテンツが特定のルールに準拠しているかどうかを確認します。
ユーザー名フィールドは、スペースがないことを保証します。
電子メールフィールドは、フォーマットが電子メールの標準を満たしていることを保証します。
電話フィールドは、電話番号が特定の形式を満たしていることを保証します(たとえば、 123-456-7890など)。
フィールドが要件を満たしていない場合、 array_filterは違法データを除外し、法的フィールドのみを持つ新しい配列を返します。
ユーザーが無効なデータを送信したときにプロンプトを提供する場合は、 $ validDataが空であるかどうかを確認して実行できます。
<?php
// 仮定$validData上記のコードを介して生成されました
if (empty($validData)) {
echo "提出されたすべてのデータは無効です,入力を確認してください。";
} else {
echo "データ検証が合格しました!";
// さらに有効なデータを処理します
}
?>
配列$ validDataが空の場合、ユーザーが提出したすべてのデータが検証ルールに準拠していないことを意味します。この結果に基づいてユーザーにフィードバックできます。