• 締切済み

半角カナ→全角カナの変換でエラー

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

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

  • altrn
  • ベストアンサー率62% (10/16)
回答No.2

mb_detect_encoding($title) が失敗していると思われます。 $titleのエンコードがわかっているなら それを指定する(UTF-8,Shift-jis,EUC-JPなど)か、 mb_internal_encoding("UTF-8"); $title = mb_convert_kana($title,"KV"); などとすればいいかと思います。

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

php.iniの設定が ;mbstring.language = Japanese になっていたら mbstring.language = Japanese にすれば解決するかもしれません

関連するQ&A

  • 全角の”’¥を半角に変換したい

    PHPを勉強し始めた超初心者です。よろしくお願いいたします。 表題のとおり、PHPにて全角の”’¥を半角の"'\に変換したいのですが、うまくできません。 ----- A ----- $s = "”’¥"; mb_convert_kana( $s, "as" ); 結果:全て全角のまま。 ----- B ----- $s = "”’¥"; $s = mb_ereg_replace( '”', '"', $s ); $s = mb_ereg_replace( '’', '\'', $s ); $s = mb_ereg_replace( '¥', '\\', $s ); 結果:”’は半角になるんですが、¥は半角になりません。 なにか根本的に間違いがあるんでしょうか? あともう一つ、日本語環境について、 mb_language( "Japanese" ); mb_internal_encoding( "EUC-JP" ); mb_regex_encoding( "EUC-JP" ); mb_substitute_character( "none" ); mb_detect_order( "SJIS,EUC-JP,JIS,UTF-8,ASCII" ); と、ソースに指定しているのですが、ローカル環境がWindowsなので、ソースそのものはSJISになっていると思います。(コード体系管理できないテキストエディタ使用) しかしこれをそのままサーバーにアップしても、問題なく(文字化け等無く)print"サシスセソラリルレロ"; なども表示されるんですが、これはこれでいいんでしょうか? 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 英気表現:英字でエラーにしたいのにカナ文字もひっかかります。

    こんにちは。 いつもお世話になっております。 簡単な正規表現で行き詰っており、検索したり参考書を読んだりしたのですが 解決できず、途方に暮れております。 どうか、ご指導よろしくお願い申し上げます。 英字が含まれていたらエラーを返したいだけなのですが 全角カナ文字の場合でも、エラーになってしまいます。 /* 「仮名」を全て「全角カタカナ」に変換 */ $namekana = mb_convert_kana($namekana, "KVC"); /* 「半角カタカナ」を「全角カタカナ」に変換し、「全角」英数字を「半角」*/ $namekana = mb_convert_kana($namekana, "KVa"); if( preg_match("/[a-zA-Z]/", $namekana ) ) { print "<font color=\"red\">カナに英字が混じっています。カナは全角カナで入力して下さい".$namekana."</font><br>"; } どこがおかしいのか、判らないのです。 どうかご指導よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • mb_ereg_replace での文字変換

    PHPでフリーの掲示板を制作中です。 目立たせようとする記号を削除しましたがうまく動きません。 $html = mb_ereg_replace('△', '', 'あああ△あああ'); ・希望結果 ああああああ ・実際の結果 ああ 文字コードは全て EUC-JP です。 また以下を追加するとエラーがでました。 $str="あああ△あああ"; $str = mb_convert_encoding($str, 'EUC-JP', 'auto'); ・エラー Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding in そもそもmb_convert_encodingを使わない方が良いのか使い方が悪いのかも解りませんがアドバイスお願いします。

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

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

    • ベストアンサー
    • Perl
  • SJISで取得した半角カナをUTF-8に変換する方法

    現在、画面がSJISで作成されており、スクリプトはUTF-8で作成されています。 画面から来るデータを全て自動的にUTF-8に変換し、スクリプト上で処理し、 最後に自動的にSJISに変換し直して画面へ出力しています。 しかし、半角カナだけの文字列が画面から渡ってきた場合、 文字エンコーディングした瞬間、化けます。 全角文字を含んでいれば問題ないのですが・・・。 化けてしまう為、スクリプト内で既に支障を来たしてしまいます。 これをどうにか解消させる方法はありませんでしょうか? 以下、決定事項の為、変更する事は出来ません。  ・画面はSJISで出力、テンプレートファイルもSJISで記述  ・スクリプトはUTF-8で記述  ・根本的なエンコーディング処理   (受け取った値に対して、以下の処理を走らす。   mb_language("japanese");   mb_convert_encoding("UTF-8", "auto");   画面へ出力する際に、以下の処理を走らす。   mb_language("japanese");   mb_convert_encoding("SJIS", "auto");としている)  ・画面から受け取る文字列は何でも受け取る どなたかご教示下さい。

    • ベストアンサー
    • PHP
  • 【PHP】全角記号を半角記号に変換するには?

    PHP5使用者です。 全角記号を半角記号に変換するにはどうすればいいのでしょうか? 現在、 mb_convert_kana($str, 'a' , 文字コード); で変換していますが、なぜか  !”#$%&’()*+,-./:;<=>?@[¥]^_`{|}~  のうち、  ’ ” ¥ ~ は変換してくれません。 それに本来これは記号変換の関数ではありませんし… 全角記号を半角記号に変換したい場合、皆さんはどうされてますか? よろしくお願いします。

    • 締切済み
    • PHP
  • 絞込み検索(and検索)について

    PHPの勉強をしています。色々試してみたのですが解決までいたらなかったのでご相談させて頂きます。 テストで検索を掛けたら下記のようなエラーが発生しました。 Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding in C:\Program Files\xampp\htdocs\PHPSAMPLE\sample_php\search.php on line 19 上記のエラーは $KeyWord=mb_convert_encoding($KeyWord,"Shift_JIS","auto"); を外す事でエラーにならず検索する事ができました。 ■ソース --------------------------------------------------------------------------- 13 if($_GET["key"]==""){ 14 print"キーワードを入力してください"; 15 }else{ 16 $KeyWord=$_GET["key"]; 17 $KeyWord=htmlspecialchars($KeyWord); 18 $KeyWord=mb_convert_encoding($KeyWord,"Shift_JIS","auto"); 19 $KeyWord=mb_convert_kana($KeyWord,s); 20 $ArrKeyword=explode(" ",$KeyWord); --------------------------------------------------------------------------- つづいて、区切りに使われるスペースを「半角」「全角」どちらでも対応できるように 「全角スペース」が入力された場合、すべて半角スペースに統一するようになっているはずなんですが 例)フルーツ リンゴ と全角スペースで絞り込んだ場合。検索結果が0と表示されてしまいます。 半角スペースで絞り込んだ場合。表示結果が1件と正常に表示されます。 ■ソース --------------------------------------------------------------------------- 13 if($_GET["key"]==""){ 14 print"キーワードを入力してください"; 15 }else{ 16 $KeyWord=$_GET["key"]; 17 $KeyWord=htmlspecialchars($KeyWord); 18 $KeyWord=mb_convert_kana($KeyWord,s); 19 $ArrKeyword=explode(" ",$KeyWord); --------------------------------------------------------------------------- mb_convert_kanaで「全角」スペースを「半角」に変換するように設定し explodeで文字列を半角スペースで分割するようにしているはずなんですけど うまく機能しません。。。 記述方法が間違っているのか?何かがたらないのか? 自分なりに考えたのですが改善策が見つかりません。 どなたか知恵を貸して頂ければと思います。 宜しくお願いいたします。

    • 締切済み
    • PHP
  • PHP 全角・半角・英数字 エラー判定

    PHPを独学で勉強しているものです、あるサイトを構築中で、入力内容のエラー判定をしたいのですが、どうしても半角英字がエラーではじかれず、どなたかご指導いただけますでしょうか。 PHPのバージョンは5.2で、DBはMySQLでユーザーがある情報を登録できるサイトで、データ型にあわせるため、1以上の半角数字のみ受け付けるようにしたいです。 入力欄は3か所で、$ic0、$ic1、$ic2に格納されています。 入力が全角数字の場合はそれぞれを半角数字に自動変換したいとおもっています。 自作したものは下記の通りです。 宜しくお願い致します。 /*エラー判定*/ $ic_check=$ic0.$ic1.$ic2; if(preg_match("/^[0-9]+$/", $ic_check)){ if($ic0=="0" || $ic1=="0" || $ic2=="0"){ $error_msg="1以上の数字を入れてください。"; }else{ $error_msg=""; } } elseif(preg_match("/^[0-90-9]+$/",$ic_check)){ $ic0=mb_convert_kana($ic0, "n", "Shift_jis"); $ic1=mb_convert_kana($ic1, "n", "Shift_jis"); $ic2=mb_convert_kana($ic2, "n", "Shift_jis"); if($ic0=="0" || $ic1=="0" || $ic2=="0"){ $error_msg="1以上の数字を入れてください。"; }else{ $error_msg=""; } } elseif(preg_match("/^[a-zA-Z]+$/",$ic_check)){ $error_msg="半角数字で入力してください"; } else{ $error_msg="半角数字で入力してください"; }

    • ベストアンサー
    • PHP
  • PHPスクリプトでエンコードエラー

    (http://c-php.mine.nu/)で配布されている「貼り付けアンケート」を設置したところ、以下のようなエラーが出ました。 Warning: mb_convert_encoding(): Illegal character encoding specified in /home/toraya-c/public_html/harituke/harituke.php on line 94 Warning: mb_convert_encoding(): Illegal character encoding specified in /home/toraya-c/public_html/harituke/harituke.php on line 95 Warning: mb_convert_encoding(): Illegal character encoding specified in /home/toraya-c/public_html/harituke/harituke.php on line 96 Fatal error: Call to undefined function: mb_check_encoding() in /home/toraya-c/public_html/harituke/harituke.php on line 140 エンコードがうまくいってないようなのですが。。 指定の行数の記述は以下です。 $title = mb_convert_encoding($title,'EUC-JP',$en); $body = mb_convert_encoding($body,'EUC-JP',$en); $quest = mb_convert_encoding($quest,'EUC-JP',$en); if(!mb_check_encoding($body,'EUC-JP') || mb_check_encoding($body,'ASCII')){ 配布されているものを特に変えず(設定部分以外)、そのままupしたつもりですが、エラーの原因がわかりません。 当方、php初心者なので的外れな質問でしたら申し訳ございませんが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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 をご覧下さい。

    • 締切済み
    • PHP