2016-05-12 13 views
2

IF OR文を正しく作成するのに問題があります。この場合、||を使用するかどうかは関係ありません。または "OR"。PHP IF IF AND AND not working

私が今持っている: if($email == '' || (!filter_var($email, FILTER_VALIDATE_EMAIL)))

私が取得エラーPHP Fatal error: Call to undefined function \xa0() in

私は、このエラーメッセージCall to undefined function \xa0() inは、エンコードタイプのようにたくさんあるに見えるPHP Parse error: syntax error, unexpected '!' in

+0

ここであなたのコードを試してみました。http://phpfiddle.org/ ..エラーは見つかりませんでした..コードを実行succesfuly – Poria

+0

それでは、Apacheの/ PHPの設定に関連するものは何ですか? – Diamonte

+1

あなたが使用しているPHPのバージョン – RiggsFolly

答えて

6

エラーを取得if($email == '' || !filter_var($email, FILTER_VALIDATE_EMAIL))

に変更した場合あなたの問題の原因。 \xA0文字は時間を浪費です:それはおそらくはCtrl +Cの間に挿入された特別な「空白」ですので、問題がある

\xa0 is actually non-breaking space in Latin1 (ISO 8859-1), also 
chr(160). You should replace it with a space. When .encode('utf-8'), it 
will encode the unicode to utf-8, that means every unicode could be 
represented by 1 to 4 bytes.Jun 12, 2012 

Python: Removing \xa0 from string?

から、あなたはそれのいずれかを見ることができません/Ctrl + V奇妙なIDEまたはウェブサイトから。

このファイルからそれらのすべてを削除し、good whitespacesに置き換える必要があります。

file_put_contents('your-script-cleaned.php', 
        str_replace('\\x0a', 
        ' ', 
        file_get_contents('your-script-original.php'))) 

IDE検索&置き換えるだけで、同様のトリックを行うことができます。

+2

こんにちは、私は右のトラックに私を案内します、奇妙なものがあります。ファイルはUTF-8として動作しますが、ISO-8859-1としては動作しません。これは、しかし、私はこのことについても考えていませんでした。なぜなら、このプロジェクトのすべてではないにしてもほとんどがISO – Diamonte

+1

です。エンコーディングエラーは悪化しています。コードレビュー:S)。 – smassey

0

コードには、||の後に改行なしのスペース文字(\u00A0)があります。

さらにPHPは、このように、それは

<nbsp>!filter_var($email, FILTER_VALIDATE_EMAIL) 

であるのに対し

<nbsp>(!filter_var($email, FILTER_VALIDATE_EMAIL)) 

はない

myfunction(!filter_var($email, FILTER_VALIDATE_EMAIL)) 

とは異なり、関数呼び出しであると考えて、そのバイトの実行可能な識別子を検討するのに十分な愚かです構文エラー(myfunction!filter_var($email, FILTER_VALIDATE_EMAIL))、! cannバイナリ演算子として使用できます)。このような非破壊スペースを入力する


を使用すると、私が使用している標準フィンランドのレイアウトとしてのAlt Grの、とのパイプ文字|を入力する必要があり、前記キーボードレイアウトにかなり一般的に起こります。これは、Alt Grがまだスペースバーを押しながら押し下げられているために発生します。多くのレイアウトでAlt Gr + は、改行しないスペースを生成します。(私自身は、スペースバーキーを作るために私の答えに改行なしスペースを使用しないことに注意してください。)


良いエディタは、構文エラーをこのような使用をマークすることができるだろうか、おそらくあなたは設定することができ、あなたのそのような間違いを強調する