PHP 正規表現検証で一般的に使用される特殊文字
プログラミングでは、ユーザーが入力したデータを検証する必要があることがよくあります。 PHP では、正規表現を使用してこのニーズを簡単に満たすことができます。ただし、ユーザーが入力するデータは多岐にわたるため、データの有効性とセキュリティを確保するために特殊文字の検証に特別な注意を払う必要がある場合があります。
特殊文字の範囲は非常に広く、HTML タグ、URL アドレス、XML タグ、SQL ステートメントなどはすべて特殊文字です。これらの文字はプログラムの実行に影響を与えたり、不適切に悪用されてセキュリティ上の脆弱性を引き起こしたりする可能性があります。したがって、一般的に使用される特殊文字を理解し、検証のために PHP 正規表現を使用する必要があります。
HTML タグは、Web ページに不可欠な要素です。ただし、適切にフィルタリングされていない場合、これらのタグは攻撃に悪用される可能性もあります。 PHP 正規表現を使用して、HTML タグを検証およびサニタイズできます。たとえば、次の正規表現では、HTML タグが含まれているかどうかを確認できます。
if (preg_match('/<(.*)>.*</>|<(.*) />/', $string)) { echo "包含HTML标记"; } else { echo "没有包含HTML标记"; }
上記の正規表現では、
は、正規表現 の最初のかっこ内の一致を表します。
は、2 番目の括弧内の一致を示します。
英数字は、文字と数字の文字列です。一部のシナリオでは、英数字のみが許可されます。この場合、検証に次の正規表現を使用できます:
if (preg_match('/^[a-zA-Z0-9]+$/', $string)) { echo "是字母数字字符"; } else { echo "不是字母数字字符"; }
上記の正規表現では、^
は文字列の先頭を表します。 . $
は文字列の終わりを表し、[a-zA-Z0-9]
は任意の文字または数字との一致を表します。
アプリケーションでは、ユーザーが入力した URL アドレスを確認する必要があることがよくあります。次の正規表現を使用して、URL アドレスの形式を確認します。
if (preg_match('/^http://[a-zA-Z0-9-.]+.[a-zA-Z]{2,3}(/S*)?$/', $url)) { echo "URL地址格式正确"; } else { echo "URL地址格式错误"; }
上記の正規表現では、^
は文字列の先頭を表し、$
は文字列の先頭を表します。文字列の末尾。 ; http://
は、「http://」で始まる文字列と一致することを意味します。 [a-zA-Z0-9-.]
は、任意の文字列と一致することを意味します文字、数字、水平線またはピリオド。数字は少なくとも 1 です。[a-zA-Z]{2,3}
は、任意の 2 つまたは 3 つの文字と一致することを意味します。(/S* )?
は、スラッシュの後に空でない任意の数の文字が続くことを意味します。この部分はオプションです。
XML ドキュメントでは、タグとそのコンテンツは特定の形式で表現されます。次の正規表現を使用して、XML タグの形式が正しいかどうかを確認します。
if (preg_match('/^<([^/]+?)>.*</>$/', $xml)) { echo "XML标签格式正确"; } else { echo "XML标签格式错误"; }
上記の正規表現では、^
は文字列の先頭を表し、$
は最後の文字列を表し、<([^/] ?)>
はスラッシュ以外の文字と一致することを意味し、括弧はこの部分を最初の一致として取得して記録することを意味します。 #.* は任意の数の文字と一致することを意味し、
> は最初に一致した文字列と一致することを意味します。
function filter_sql($string) { // 去除SQL关键字 $string = preg_replace('/(SELECT|UPDATE|DELETE|DROP|INSERT|ALTER)/i', "", $string); // 去除单引号 $string = str_replace("'", "", $string); return $string; }
は単語の境界を表し、
(SELECT|UPDATE| DELETE) |DROP|INSERT|ALTER) はこれらのキーワードと一致することを意味し、
i は大文字と小文字を区別しないことを意味します。
以上が一般的な特殊文字を検証するための PHP 正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。