-2

このフォームを送信すると、実行してはならない一致が発生し続けます。ドル記号と関係があることは知っていますが、組み合わせを理解できず、Googleで正しい答えを見つけることができないようです。

<?php
if ( isset( $_POST['test'] ) ) {
    $u = $_POST['test'];
    echo preg_match('/[a-z0-9\-]+/i', $u);
}
?>

<form method="post">
    <input type="text" name="test" value="12$abc213">
    <button type="submit">Submit</button>
</form>
4

3 に答える 3

3

する必要があります

preg_match('/^[a-z0-9\-]+$/i', $u)
于 2013-03-23T19:04:21.320 に答える
2

文字列の最初と最後を一致させる必要があります。一致しない場合、一致するサブ文字列で渡されます。

preg_match('/^[a-z0-9\-]+$/i', $u);
于 2013-03-23T19:04:30.900 に答える
2

「1」が一致、「2」が一致、「abc213」が一致、「a」が一致などであるため、preg_matchは一致を検出しています。文字列全体が一致することを確認しますか?次に、このパターンを試してください。

preg_match("/^[a-z0-9\-]+$/i", $u);

式を^..$でラップすると、そのシーケンスで開始および終了する必要があります。文字列内のすべての文字がこのパターンに一致しない限り、これは一致しません。文字列内の「文字のシーケンス」のいずれかがパターンに一致する場合は、一致します。

于 2013-03-23T19:06:02.090 に答える