カテゴリー

月別過去記事

みるくぜりー内 検索
Loading

[php]配列の文字コードを全部かえる関数

もっといいやり方はありそうだけど…思いつかなかったので作ってみました。
#再帰処理なんて書いたの学校卒業以来じゃないかしら(/ω\)
2007/02/22 追記
もっといいやり方教えてもらえましたヽ(´ー`)ノ
mb_convert_variables($to, $from, $params);
ソースはすっきりしたけど、コメントにも書いたとおりなんか気持ち悪いです(苦笑)


使い方はいつものmb_convert_encodingみたく引数を渡すだけ。
一個目のところに配列渡してもエラー吐いたり、崩したりせずに
やってくれるよというただそれだけ。
またどこかで使う気がするのでとりあえずここに書くことにしました。
function recursive_mb_convert_encoding($param,$to_encoding,$from_encoding="auto"){
if(empty($from_encoding)){
//autoって好きじゃないけどエラー出ちゃうのでとりあえず。
$from_encoding="auto";
}

if(is_array($param)){
foreach($param as $k => $v){
$param[$k]=recursive_mb_convert_encoding($v,$to_encoding,$from_encoding);
}
}else{
$param=mb_convert_encoding($param,$to_encoding,$from_encoding);
}
return $param;
}

2007/02/21のお昼どき ちょこっと修正。


コメント
1行目の

$from_encoding=""

$from_encoding="auto"

にした方が、行数減りますよー
デフォルト引数。
  • なかむぅ
  • 2007/02/21 1:06 PM
コメントありがとうございますー。

$from_encodingが空白のときにエラーが出たので
とりあえずこれかしら?とためしに入れた
コードがそのままでしたね(´・ω・`)
あとで修正しようと思ってたんですけどすっかり忘れてました。
一応修正しましたが、トラバをくれた夜想さんトコのが
ちゃんと$paramの空白文字対策まで入ってて良いかと思います。
めんどくさいのでこっちはあまり触らないことにします(笑)
拙いトラバですみませんm_m
結局、パラメータにちゃんとした文字コードが指定されるかどうかは、使う人任せなんですよねぇ^^;
mb_convert_variables($to, $from, $params);
では?
  • 通りすがり
  • 2007/02/21 10:52 PM
PHPって日本語弱い、ってよく言われているらしい?ですがw

このソースって、たぶん文字コードが特定できない場合、を想定しているのかなーと思っていますが。
たしかに渡す文字列によって、指定なしだとおかしな変換してくれることがあったり、
auto でもコケたりしますよね。
detect使ってもコケたりすると、鬱になりませんか?www
まぁ、しょうがない話ですが。。。

再帰、って私もあまり使う機会がないんですが
(大したシステム組んでないのでw)
やろうと思ったときにすぐ、再帰の発想が出るのは素晴らしいですね。
  • なかむぅ
  • 2007/02/22 2:20 AM
autoって日本語コードだけですよね。
韓国語とかあるとどうなるんでしょう?

ちなみにa-z 0-9とかだけで書いたものをautoで判別すると全部ASCIIで判別されてますね。


全部同じ文字コードしかこないならmb_convert_variables()でいいと思います。
# 違う文字コードのデータをまとめるときってあんまりなさそう。。。
>mb_convert_variables($to, $from, $params);
この関数見逃してました!(´Д⊂
なんていうか、同じような機能が別の関数であるってことと、
引数の順番が違うのがちょっと気持ち悪いですね。。。

この処理についてはまえからもやもやとしてたんで書いてよかったです。
># 違う文字コードのデータをまとめるときってあんまりなさそう。。。
と言っていた自分が、今日その処理をすることになりました(汗

mb_convert_variables()では対応できないようなので、ちょっと作り直して対応しました(´Д`;)
コメントありがとうございます。

ソースのありかはコレですね(*'-')ノ
http://vector.jugem.jp/?eid=57
何かのときに使うかもしれないのでココにURL残しておきます。

プログラムって連鎖するもんなんですね(笑)
管理者の承認待ちコメントです。
  • -
  • 2009/12/03 12:45 PM
コメントする








   
この記事のトラックバックURL
トラックバック
みるくぜりーの[php]配列の文字コードを全部かえる関数より。 もっといいやり方はありそうだけど…思いつかなかったので作ってみました。 #再帰処理なんて書いたの学校卒業以来じゃないかしら(/ω\) 再起処理なんて自分で書かなくてもいいのよ。 mb_co
  • /halt/Snapshot
  • 2007/02/22 12:58 PM
茅乃さんのブログ(みるくぜりー)のエントリーで、[php]配列の文字コードを全部かえる関数というのがあったので、自分ならどう書いてるかなぁと思って書いてみた。 /**  * mb_convert_encoding()の拡張  *  * @param mixied $target a
  • 夜想
  • 2007/02/21 11:22 AM