重複の可能性:
文字数を10に制限する正規表現
POSTを標準フォームに取得し、次の2つのことをテストする必要があります。
- 値は40文字である必要があります
- 値には文字と数字のみを含める必要があります
preg_matchでこれを行うことは可能だと思いますが、方法がわかりません。
重複の可能性:
文字数を10に制限する正規表現
POSTを標準フォームに取得し、次の2つのことをテストする必要があります。
preg_matchでこれを行うことは可能だと思いますが、方法がわかりません。
グローバル$_POSTには、httpリクエストに投稿されたすべてのデータがあります。
それから:
$myvar = $_POST['your_posted_variable_here'];
$result = preg_match('/^([\w\d]){40}$/i', $myvar);
投稿されたデータに文字と数字のみが含まれ、長さが40文字の場合、$ resultはtrueになります。それ以外の場合は、falseになります。
正確に40文字の場合:
^[a-zA-Z0-9]{40}$
少なくとも40文字の場合:
^[a-zA-Z0-9]{40,}$
preg_matchに関する情報
http://php.net/manual/en/function.preg-match.php
if (preg_match("@^[a-z0-9]{40}$@mis", $_POST['username'])) {
print 'matched';
}
最初にstrlen()を使用して文字列の長さをチェックし、それが目的の長さを満たしている場合は、アルファ数値のチェックに進むこともできます。
しかし、将軍は正しい考えを持っています...
別の方法は次のとおりです。
preg_match("/^[0-9a-zA-Z_]{40,}$/", $_POST["something"])
これは英数字であり、少なくとも40文字をチェックしますが、それ以上を受け入れます。カンマの後に値がないということは、40以上の任意の値である可能性があることを意味します。
PHPには、英数字ctype_alnumとstrlenをチェックして文字列の長さをチェックする関数が用意されているため、両方の関数を使用して文字列を検証できます。
$yourInput=$_POST['yourInput'];
if(ctype_alnum($yourInput) && strlen($strlen)==40)
{
//...
}