• 締切済み

mb_convert_kana関数を使わず、全角カナを半角カナに変換したいがエラーが出る

http://w1.nirai.ne.jp/freeze/main/file19.html このページの見出し【 「使えない!」 時は作る! 】以下の内容を参考に 全角カナを半角カナに変換するコードを組んでみました。 組んだコードの内容は以下のURLで確認できます。 http://m630.net/code.txt これを実行すると http://m630.net/hankana.php のようにエラーが表示されます。 どうも、"ソ"=>"ソ(半角)", の部分が影響しているようで、これをコメントアウトすると 正常にスクリプトが実行されます。 どうしてエラーになるか、解決策があれば教えてください。 質問中に登場するURLのサーバーのPHPの仕様については、 http://m630.net/info.php をご覧下さい。

みんなの回答

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

5C問題ですね。 とりあえず、shift_jisをやめれば直りますよ。 「ソ」は 835C です。 \ は5Cです。 つまり、 'ソ' と書いたときに。 '85\' という状態。 つまり、 閉じる「'」がエスケープされてしまうんです。 ですから構文エラーとなります。 http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.90.E3.82.A4.E3.83.88.E7.9B.AE.E3.81.8C5C.E7.AD.89.E3.81.AB.E6.88.90.E3.82.8A.E3.81.86.E3.82.8B.E3.81.93.E3.81.A8.E3.81.AB.E3.82.88.E3.82.8B.E5.95.8F.E9.A1.8C

emsyk144
質問者

お礼

ご回答ありがとうございます。 5C問題、超参考になりました。 文字コードをUTF-8に変えたら、正常にスクリプトを実行できました。 Shift_JISって面倒なんですね。 勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 全角カナを半角カナへ

    お聞きしたいのですが 全角カナを半角カナに変換したいのですが、どのような関数もしくはやり方(ロジック)があるでしょうか? ちなみにPHP4ではなくPHP3です。 すみませんが、宜しくお願いしますm(_ _)m

    • ベストアンサー
    • PHP
  • mb_convert_kanaについて

    全角カナを半角カナにしたいのですがうまくいきません。 $str = "テスト"; print mb_convert_kana($str, "k"); とやっても「テスト」と表示されます。 何が問題なのでしょうか。 PHP Version 4.3.2です。 他にも必要な情報があったら指摘してください。

    • ベストアンサー
    • PHP
  • mb_convert_kanaが動作しない

    MySQLから半角カナの入ったデータを全角表示したいのですが半角のまま表示されます。 mb_convert_kana("ガチョーン","KV")          ↑実際は半角です とやっても半角のまま表示されてしまいます。 PHP4.3.3でmbstringはデフォルトの状態で入っています。 ちなみに文字コードはMySQL、PHP共にSJISです。 この文字コードが原因の気もするのですが、今さら変更するのはきついので、 このままの状態で正しく表示させる事は可能なのでしょうか?

    • ベストアンサー
    • PHP
  • 半角カナ→全角カナの変換でエラー

    「mb_convert_kana」で半角カナ→全角カナの変換を行なう処理の部分で エラーが発生します。 処理部分とエラーの内容を以下に記載します。 処理: $title = mb_convert_kana($title,"KV",mb_detect_encoding($title)); エラー内容: Warning: mb_convert_kana(): Unknown encoding "" in~ 他の人が作った関数で、今までは正常に動作していたとの事なので、 何が原因なのかよく分かりません。 どなたか、解決方法よろしくお願いします。

    • 締切済み
    • PHP
  • 半角カナから全角カナに変換

    Jcode.pmを使用して半角カナから全角カナに変換したいのです。 こちらの過去ログを拝見し、以下のようなロジックを記述したのですが、 ”Undefined subroutine &Jcode::h2z_euc called at test_jcode.pl line 7.”というエラーが出てしまいます。 use Jcode; $line = 'アイウエオ'; $ato = &Jcode::h2z_euc(\$line); print $ato, "\n"; どなたかご回答よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Access2003のVBAで半角カナを全角カナにしたいです

    Access2003を使っています。過去の質問集を検索したのですが分からなかったので教えてください。 次のコードで、「ふりがな」(半角カナ)のところを「ふりがな」(全角カナ)に変更しても、勝手に「ふりがな」(半角カナ)になってしまうのですが、なんとかならないでしょうか? Private Sub Form_Current() Me!整理番号.Enabled = False Me!氏名.Enabled = False Me!ふりがな(注:半角カナになってます).Enabled = True Me!生年月日.Enabled = False End Sub 以前Access2000を使っていた時は対象のフォームにて、テキストボックスに「ふりがな」(半角カナ)と名前をつけていたので問題はなかったのですが、Access2003に移行した際に上記コードの半角カナの部分でエラーが出るようになったので、全角カナに名前を変更した為に.Enabled = Falseが機能しなくなってしまいました。ご助言をお願いします。

  • エクセル_関数_半角カナを全角にしたいのですが。

    お尋ねします。 半角カナを全角カナに変換しようと、エクセル関数のJISを使いました。 ところが、1つのセルに255文字までなら正常に変換ができるのですが、256文字以上になると、#VALUEでエラーとなります。 昔のバージョンが低いエクセルでは、1つのセルに255文字までしか入らなかった記憶があるのですが、エクセル2007では、一つのセルに255文字以上登録しているセルもあり、文字が途中で切れているようには見えません。 関数LENを使って調べてみますと、300文字入ったセルもあります。 しかし、その300文字入ったセルを関数の引数とした場合に上記のようなエラーになってしまいます。 「255文字以上のセルは分割してすればいいじゃないか」とのお声もあるかとともいますが、分割はせずに半角カナの入ったセルを全角カナに置き換えることはできないでしょうか。 よろしくお願いします。

  • Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております

    Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております。 以下のようにプログラミングをしてます。 結果が、思った通りではないのですが、何が原因でしょうか。 ※★→←★部分で囲んだ部分は半角文字です(ブラウザ上、半角文字が全角に変換されているようなので、  適宜そのような表記を入れました。 ●半角→全角変換 sss = "★→アイウエオ←★".tr('★→ア-ン←★', 'ア-ン') p sss ⇒★→アウオキケ←★ ●全角→半角 sss = "アイウエオ".tr('ア-ン', '★→ア-ン←★') p sss ⇒ア★→イ←★イ★→ウ←★ウ どうか原因を教えてください。

    • ベストアンサー
    • Ruby
  • 半角カナから全角カナへ

    お世話になります。 今、フォームから入力された半角カナを全角カナへ変換しようとしているのですが、どうしてもうまく行きません。 処理は以下のようにしています。 jcode::convert(\$str, 'euc'); if($str =~ /[\xA1-\xDF]/){ jcode::h2z_euc(\$str); } (1)まず、半角カナが含まれているかのチェックで[\xA1-\xDF]を使用していますが色々調べたところ、実際は (?:\x8E[\xA6-\xDF]) が正しいようなのですが、この場合文字数が少ないとひっかかってくれません。例えば半角のア1文字や2文字など。また、文字数が多くても半角英数と半角カナが混在しているとひっかからない場合もあります。 上記の式だとひっかかってくれますが、この判定で構わないのでしょうか。 (2)上記の式できちんと置換されるものとされないで漢字のように文字化けするものと出てきてしまいます。 例えば「インターフェース」などという半角は全滅です。 「バージョン」などは大丈夫でした。 間違いなど教えて頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • SQLのデータで半角カナを全角にしたい

    レコード数かけるフィールド数が何万とあるデータベースのデータの中で 半角カナの部分だけを全角カナに変えたいのですが、何かよい手はありますでしょうか? 半角数字と半角記号(ハイフンやスラッシュなど)はそのままにしておきたいのですが。 xamppの1.7.3を使用しており、MySQL5.14、PHP5.31です。 ご存知の方いらっしゃればアドバイスお願いします。