- ベストアンサー
半角英数文字を全角英数文字に変換する方法
半角英数文字を全角英数文字に変換する方法ってありますか? どうしても半角カナのみならず、英数字まで全角に必要が出てきたんですが、何かいいてはありますでしょうか。 jcode.phpsは英数文字まで全角に出来ませんよね。 pgrep_replaceも使ってみたんですが、うまく引っ掛かりません。 PHP3とMySQLでEUC-JPを扱ってます。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
下の回答に補足します。 $han = "abcde"; $han = i18n_ja_jp_hantozen($han , "A" , "EUC-JP"); ~~~~~~~ ↑これがないと$hanに変換後の文字列は入りませんね。^^; 失礼しました。m(_ _)m
その他の回答 (4)
文字変換なら、i18n_ja_jp_hantozenを使うといいですよ。 この場合半角英数文字を全角英数文字にしたい訳ですから、 $han = "abcde"; i18n_ja_jp_hantozen($han , "A" , "EUC-JP"); で$hanの中の半角文字は全角に変換されます。 ついでに半角カタカナも変換したいのなら、 i18n_ja_jp_hantozen($han , "AKV" , "EUC-JP"); とすればよいです。 詳しくは、以下のHPを参照してください。 -PHP マニュアル(日本語版)- http://www.asakawa.ne.jp/doc/php/ja/sjis/function.i18n-ja-jp-hantozen.html
- terra5
- ベストアンサー率34% (574/1662)
日本語EUC Code Table http://www.rtpro.yamaha.co.jp/RT/docs/misc/kanji-euc.html を眺めてください. 例えば,A1A3というのが、EUCの"、"です。 $table_han2zen_eucという配列はEUCコードが含まれていて, ここにある文字に対応する半角文字があれば、 それを変換するという処理です。 ですので、英数字を追加するなら, このテーブルに英数字のEUCコードをテーブルに追加すればできると思われます. 例えば,数字の"0"なら対応する全角文字はEUCコード表からa3b0と判りますので, $table_han2zen_eucに0xA3B0を追加すると, 数字の0も変換されるようになると思います。 逆に変換したくない文字があれば、このテーブルから外せばいいだけです。 ちなみに半角0は 0x30です。 ただ、どんな文字でもできるというわけではありませんけど(^^;;; 多分,英数字なら問題無いと思いますが、 確認してないので自信無しにしておきます(^^; だめなら、きちんとソース読みます(^^;;; perlの置換なら tr/ABC/ABC/ ができるかも知れません。 perlか漢字コードを1文字として扱っているならできると思います。 これも未確認.
- terra5
- ベストアンサー率34% (574/1662)
jcode.phpsをちょっと変更して使うというのは? function HANtoZEN_EUC(&$str_HAN) { $table_han2zen_euc = array(0xA1A3, のテーブルを追加すればいいだけな感じがします。 EUCのコード表と見比べて試してみては? ちなみに私はPHP3は知りません(^^;; 見ればだいたい何しているかの見当ぐらいはつきますけど。
補足
ありがとうございます。 jcode.phpsを見てみたんですか、何をやってるかは漠然としてわかっても、具体的にどう変えればいいかわかりませんでした。でも今度時間のあるときにソースを解読して自分なりのものを作ろうと思います。 それまでに0x80やら0xA1A3やらのバイナリコード(っていうんですか?)アレルギーを克服しなければ。。。 で、補足の欄をお借りして、延長戦。 とりあえずの解決法としまして以下のようにしてみたら一応やりたいことは出きるようになりました。 $han = array("/a/","/b/","/c/","/d/","/e/","/f/","/g/","/h/","/i/","/j/","/k/","/l/","/m/","/n/", "/o/","/p/","/q/","/r/","/s/","/t/","/u/","/v/","/w/","/x/","/y/","/z/","/A/","/B/","/C/", "/D/","/E/","/F/","/G/","/H/","/I/","/J/","/K/","/L/","/M/","/N/","/O/","/P/","/Q/","/R/", "/S/","/T/","/U/","/V/","/W/","/X/","/Y/","/Z/","/0/","/1/","/2/","/3/","/4/","/5/","/6/", "/7/","/8/","/9/","/-/","/_/","/ /","/&/","/</","/>/","/@/","/!/","/\,/","/\"/","/\'/", "/\+/","/\=/","/\*/","/\./","/\#/","/\//"); $zen = array("a","b","C","d","e","f","g","h","i","j","k","l","m","n", "o","p","q","r","s","t","u","v","w","x","y","z","A","B","C", "D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R", "S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6", "7","8","9","-","_"," ","&","<",">","@","!",",","”","’", "+","=","*",".","#","/"); $string1 = preg_replace($han,$zen,$string1); これはPerlの正規表現スタイルのものを使って置換えをやっているんですが、どなたか、このリストをすっきりとPerlらしい正規表現に出きる方いらっしゃらないでしょうか? よろしくお願いします。
- jedimaster
- ベストアンサー率35% (112/312)
私が使っているテキストエディタには半角→全角変換機能が有ります。EM Editorというものです。シェアウエアですがなかなか使い勝手がよく個人的には気にいっています。もっと簡単にできる良い方法があるかもしれませんが参考まで。
- 参考URL:
- http://www.emurasoft.com/jp/
補足
早速ありがとうございます。 あまりの早さに思わず椅子からずり落ちそうになりました。 ただ、あくまでPHPを使ってサーバ上で自動的にやりたいんです。 ここってそういう質問していいんですよねぇ!?
お礼
遅くなって大変申し訳ございませんでした。 もうあきらめてて、メールにも気づきませんでした。 これで試してみます。 ありがとうございました。