2017-01-14 4 views
0

私は登録スクリプトに文字とæøåだけを受け入れるようにしようとしていますが、これまでに試したことはありませんでした。それはまだæøåを受け入れません。PHP preg_matchはåøåを許可しません

これは私のコードは、これまで

if ($_POST['first'] != "" && preg_match("%^[-a-zA-Z æøå\/]+$%", $_POST['first']) == true && strlen($_POST['first']) > 0) { 
    $input_first = mysqli_real_escape_string($con,$_POST['first']); } 
else { header("Location: ../register.php?n=2"); exit; die(); } 

私が間違っているのは何ですか?

+0

ここには、https://eval.in/716341があります。 'æøå'はそれらの文字としてサーバに到着しますか?あなたはそれらのすべての小切手を必要としません。正規表現の '+'のために、値があるので、空ではなく、長さは> 1になります。 – chris85

+0

パターンと文字列がUTF-8でエンコードされている場合、[ 'u修飾子](http://php.net/manual/en/reference.pcre.pattern.modifiers.php)を参照してください。あなたのテストは冗長な '!=" "と' strlen> 0'は同じであり、あなたの正規表現はあなたの '+'数量のために空の値を禁じています。 – julp

答えて

0

PHPファイルがすでにUTF-8でエンコードされている場合は、データベースにUTF-8が必要であることを伝える必要があります。 MySQLの設定を手伝っているのではなく、あなたが期待している文字セットを接続オブジェクトに伝えれば、データベースがあなたのために残ります。

これはmysqliの接続オブジェクトの例です:

//Test-ak 
    $db = new mysqli($dbHost, $dbUser, $dbPw, $dbName); 
    $db->set_charset("utf8"); 

その後、クエリは、UTF-8でエンコードされた結果を返します。

関連する問題