1

フォームでは、ユーザーはテキストを入力できます。検証phpで、このテキストに文字、数字、および許可されている特殊文字のみが含まれているかどうかを確認したいと思います。.,:;'"/*$@#<>&+-

$pattern = '/^i';
$chars = ".,:;'\"/*$@#<>&+-";
$newString = htmlspecialchars($chars);
if (!preg_match($pattern, $chars, $text))   $error = $error . "You can use only letters, digits and [.,:;'\"/*$@#<>&+-]".'<br>';

$error変数はフォームとともにページに送り返され、そこで表示されます。

間違ったパターンを使用していますか?入力ボックスに何を入力しても、エラーが発生します。

4

1 に答える 1

3

英語のコードは次のとおりです。

  • $patternを'/^i'に設定します
  • 許可される文字のリストに$charsを設定します
  • $newStringをHTMLでエンコードされたバージョンの$charsに設定します
  • '/ ^ i'を文字のリストと照合し、一致したものを$text変数に格納します
  • 一致が失敗した場合は、エラーメッセージを表示します

さて、あなたの問題が何であるかは明らかなはずです。は有効な正規表現ではありません。もしそうなら、テキストの先頭で/^iリテラルを探しているでしょう。それだけです。i

これがあなたが意味したと思うことです:

$chars = ".:;'\"/*$@#<>&+-";
if( preg_match("([^a-zA-Z0-9".preg_quote($chars)."])",$text)) $error .= "You can only....";
于 2013-02-12T19:32:08.330 に答える