• ベストアンサー

構文エラー

PHP Version 4.3.10 windows環境で シフトジスでソース書いています "表" をいれると 構文エラーになってします。 マルチバイトに対応していないせいなのはわかるのですが "表1" みたいになにかうしろに文字をいれると大丈夫のようなので それでしばらく回避して使うことにしたのですが なにか いい回避方法あれば教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

表のようにコードの2バイト目に0x5c(\と同じ)がある文字は文字列の最後に置くとエラーになります。 $str = "勤務表"; はPHPにとっては $str = "kinnmuhyou\"; と同じように受け取ってしまうわけです。 $str = "勤務表\"; でと\を追加すればすれば大丈夫です。

noname#13325
質問者

お礼

.chr(0x95).chr(0x5C) 表を関数で直接いれて さきほど回避していたのですが 文字コード調べなくていいので \のほうがいいですね。 これを\つけると なんかお化けみたいで気持ち悪いんですが 全角文字が混ざっているときは 最後に\ を付けるようにします と 思ったのですが、 PHPエディタが  勘違いして関数を列挙してくれなくなるので .chr(0x95).chr(0x5C)で とりあえず、応急処理します。

その他の回答 (1)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

shift-jisでソースを書いていると、この他にもこの手の問題を起こす文字がいっぱい有ります。 参照:http://www.shtml.jp/mojibake/sjis_cgi.html もっとも有効なのは、ソースファイルをshift-jis以外の文字コード(eucやutf-8)にすることです。 この場合、php.iniの設定変更も忘れずに。

参考URL:
http://www.shtml.jp/mojibake/sjis_cgi.html
noname#13325
質問者

お礼

for ($i =0 ;$i<256;$i++) { echo chr($i).chr(0x5C) } for 文で256回 文字出力すれば 何個かはヒットするので ¥のつく文字は特定できるですが エラーとは別件ですが 動的に中に挿入する文字が シフトジスなので・・・ ややこしくなるので 別の文字体系のコードはさけておきたいのです。。。

関連するQ&A