0

ユーザー入力フィールドに正規表現を使用して、1 ~ 20 文字が入力されていることを確認します。

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

$post_validations = array("title" => '/^[[:alnum:][:punct:][:space:]]{1,100}$/');

しかし、ユーザーが外国語の文字や MS Word の特殊な引用符を入力すると (ここに貼り付けることはできません。通常の引用符に変換されます!)、正規表現は true を返さず、エラーが表示されます。

使用するのに最適な正規表現は何だろうと思いましたか?

ありがとう

4

1 に答える 1

6

1 ~ 20 文字であることだけを知りたい場合は、strlen()?を使用しないでください。

 $length = strlen($title);
 if($length >= 1 and $length <=20)
      echo "VALID";
 else
      echo "Invalid";

[編集]: 英数字または句読点の確認:

また、文字列に問題を引き起こす可能性のある印刷不可能な文字が含まれているかどうかも確認したい場合は、単に使用してくださいctype_graph()

 if(ctype_graph ($title))
      echo "Only alphanumeric or punctuation";
 else
      echo "Invalid non-printable characters found";

[編集2]:

  スペースも検証したい場合は、これを使用してください:

if(ctype_graph(str_replace(' ', '',$title))
于 2010-09-04T17:29:20.193 に答える