18

文字(アクセント付きの文字を含む)のみを含むことができるパターンの文字列を検証したいと思います。これが私が使用するコードで、常に「nok」を返します。何が間違っているのかわかりませんが、手伝ってもらえますか?ありがとう

$string = 'é';

if(preg_match('/^[\p{L}]+$/i', $string)){

    echo 'ok';

} else{

    echo 'nok';
}
4

2 に答える 2

43

式にUTF-8修飾子フラグu)を追加します。

/^\p{L}+$/ui

\p{L}また、文字クラスの内部をラップする必要はありません。

于 2012-07-25T11:50:54.790 に答える
1

これが後でこの質問/スレッドをチェックする人に役立つかどうかはわかりません。以下のコードでは、文字、アクセント、スペースのみを使用できます。。、?/>[-<などのような記号や句読点はありません。

<?php
$string = 'États unis and états unis';

if(preg_match('/^[a-zA-Z \p{L}]+$/ui', $string)){

echo 'ok';

} else{

echo 'nok';
}

?>

数字も追加したい場合は、このa-zA-Z0-9のようにZの直後に0-9を追加してください。

次に、これをフォーム検証に適用していて、クライアント/ユーザーがスペースバーを押して送信するのが怖い場合は、次を使用してください。

if (trim($_POST['forminput']) == "") {... some error message ...}

提出を拒否します。

于 2020-04-01T16:29:42.573 に答える