解決済み

半角英数文字を全角英数文字に変換する方法

  • すぐに回答を!
  • 質問No.260278
  • 閲覧数1297
  • ありがとう数3
  • 気になる数1
  • 回答数5
  • コメント数0

お礼率 54% (27/50)

半角英数文字を全角英数文字に変換する方法ってありますか?
どうしても半角カナのみならず、英数字まで全角に必要が出てきたんですが、何かいいてはありますでしょうか。

jcode.phpsは英数文字まで全角に出来ませんよね。
pgrep_replaceも使ってみたんですが、うまく引っ掛かりません。
PHP3とMySQLでEUC-JPを扱ってます。

よろしくお願いします。

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

  • 回答No.5

下の回答に補足します。

$han = "abcde";
$han = i18n_ja_jp_hantozen($han , "A" , "EUC-JP");
~~~~~~~
↑これがないと$hanに変換後の文字列は入りませんね。^^;
失礼しました。m(_ _)m
Be MORE 7・12 OK-チップでイイコトはじまる

その他の回答 (全4件)

  • 回答No.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
お礼コメント
nak205

お礼率 54% (27/50)

遅くなって大変申し訳ございませんでした。
もうあきらめてて、メールにも気づきませんでした。

これで試してみます。

ありがとうございました。
投稿日時 - 2002-07-11 10:35:16
  • 回答No.3

ベストアンサー率 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文字として扱っているならできると思います。
これも未確認.
  • 回答No.2

ベストアンサー率 34% (574/1662)

jcode.phpsをちょっと変更して使うというのは?


function HANtoZEN_EUC(&$str_HAN)
{
$table_han2zen_euc = array(0xA1A3,


のテーブルを追加すればいいだけな感じがします。
EUCのコード表と見比べて試してみては?


ちなみに私はPHP3は知りません(^^;;
見ればだいたい何しているかの見当ぐらいはつきますけど。
補足コメント
nak205

お礼率 54% (27/50)

ありがとうございます。

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らしい正規表現に出きる方いらっしゃらないでしょうか?

よろしくお願いします。
投稿日時 - 2002-04-28 17:45:15
  • 回答No.1

ベストアンサー率 35% (112/312)

私が使っているテキストエディタには半角→全角変換機能が有ります。EM Editorというものです。シェアウエアですがなかなか使い勝手がよく個人的には気にいっています。もっと簡単にできる良い方法があるかもしれませんが参考まで。
補足コメント
nak205

お礼率 54% (27/50)

早速ありがとうございます。
あまりの早さに思わず椅子からずり落ちそうになりました。

ただ、あくまでPHPを使ってサーバ上で自動的にやりたいんです。

ここってそういう質問していいんですよねぇ!?
投稿日時 - 2002-04-26 23:54:09
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
このQ&Aのテーマ

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ