3

私の問題は次のとおりです。スクリプトの順序を維持するために、次のように、ifステートメントには常に多くのスペースを入れます。

if( ! isset( $_GET['user'] ) || ! isset( $_GET['user'] ) )
   ...

時々、すべてが正しいように見えますが、これにより「予期しないT_STRING ...」などのエラーが発生します。次に、行を次のように変更します。

if(!isset($_GET['user'])||!isset($_GET['user']))
   ...

ファイルを保存し、スペースを再挿入し、ファイルを再度保存すると、すべてが正常に機能します。これを引き起こす可能性のあるアイデアはありますか?それはおそらくPHPパーサーのバグですか?

(これは特にこのステートメントではなく、ステートメントを含む多くのそのようなスペースで発生します)

編集:私はちょうどそれが機能しなかったときにファイルを元に戻すことができました、これはエラーを生成する正確なコードです:

if(! isset( $_GET['user'] ) || ! isset( $_GET['parent'] ) )

また、すべての文字を順番に変更しました。||との間のスペースのよう!です。

エラーメッセージは次のとおりです。

Parse error: syntax error, unexpected T_STRING, expecting ',' or ')' in ...

ここからファイルをダウンロードできます:http://geardev.de/test.zip

4

2 に答える 2

6

これは文字エンコードの問題のように見えます。使用している正確な文字エンコードが原因かどうかはわかりませんが、16進エディタを使用してPHPファイルを開くと、これを引き起こしていると正しく識別したスペース文字は実際にはマルチバイト文字です。\xC2\xA0。他のすべてのスペース文字は\x20、本来あるべきとおりです。 ここに画像の説明を入力してください


編集:
\xC2A0 UTF-8でエンコードする方法ですU+00A0改行なしスペース)。これは、ブラウザ、PDF、または高度なテキストエディタからのコピーアンドペースト、またはキーボードがShiftNBSPSpaceにマッピングされていることが原因である可能性があります。

Netbeansの人々がNBSPをコードにランダムに挿入するという苦情がありましたが、これはユーザーShiftがスペースを入力するときに誤って保持したことが原因であると思われます。

于 2012-07-15T17:53:12.493 に答える
1

これに対する唯一の可能な答えは、あなたが単に間違っているということです。

申し訳ありませんが:)問題はキーボードと椅子の間のどこかにあります。再現可能なエラーが発生した場合は、すべて元に戻します。

于 2012-07-15T16:52:12.320 に答える