多階層配列中の文字列を一括エンコード変換
SJISなデータをパースしてarrayにしたものを内部でUTF-8として使うときのフィルタ
private static function convertEncodingStr($str_tree, $to_encoding, $from_encoding='SJIS-win')
{
$ret = array();
foreach($str_tree as $key=>$elem){
if(is_array($elem)){
$r = self::transformStrTreeEncoding($elem, $to_encoding, $from_encoding);
$ret[$key] = $r;
}else if(is_string($elem)){
$r = mb_convert_encoding($elem, $to_encoding, $from_encoding);
$ret[$key] = $r;
}else{
$ret[$key] = $elem;
}
}
return $ret;
}
swfを貼ったページをIEで見るとstage.stageWidthが0になるバグ
swfを貼ったページをIEで見るとstage.stageWidthが0になる現象に遭遇。
今回は1度目に見たときはちゃんと値があるが再度そのページを表示した際に0になっていた。
けど常にそうなるかどうかは不明。
こちらの記事で紹介されているがWinのIEとMacのFirefoxで起こる現象らしい。
解決法も上記ページに記載されているのでバッドノウハウして知っておこう。
今回は1度目に見たときはちゃんと値があるが再度そのページを表示した際に0になっていた。
けど常にそうなるかどうかは不明。
こちらの記事で紹介されているがWinのIEとMacのFirefoxで起こる現象らしい。
解決法も上記ページに記載されているのでバッドノウハウして知っておこう。
AS3でドーナツのような型抜きSpriteを作る方法
AS3でドーナツのような型抜きSpriteを作るには同じ色を2回塗るといいらしい
こんな感じになる
もちろん四角なども同様に可能。いまいち理由がわからないがそういう仕様のようだ。
このSpriteにクリックをaddEventListenerした場合は色のついた外側部分のみ反応する。
var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0xFF0000); sprite.graphics.drawCircle(0,0,50); sprite.graphics.drawCircle(0,0,30); sprite.graphics.endFill();
こんな感じになる
もちろん四角なども同様に可能。いまいち理由がわからないがそういう仕様のようだ。
このSpriteにクリックをaddEventListenerした場合は色のついた外側部分のみ反応する。
<meta>の前に<title>があってはいけない
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>タイトル</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="content-language" content="ja" /> </head> <body> </body> </html>
こんなようなHTMLをよく書くと思うのですが<meta>の前に<title>があると
ブラウザによって予期せぬ動作(JSが実行されないなど)が発生する。
エンコードが指定される前にエンコード指定が必要なtitleが記述されているのが
原因なので言われてみれば納得。
ということで以下のように<meta>の後に<title>を書くように意識しましょう。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="content-language" content="ja" /> <title>タイトル</title> </head> <body> </body> </html>
mb_convert_kanaの罠
PHPにはmb_convert_kanaという半角/全角を変換する関数が用意されています。
以下のようにして変換が可能です。
しかしこの関数には罠があって " ' - \ といった記号は変換が行われません。
なので以下のように変換する必要があります。
以下のようにして変換が可能です。
$hankaku = "abcABC"; $zenkaku = mb_convert_kana($hankaku, "R");//半角英字→全角英字 echo $zenkaku; // "abcABC"
しかしこの関数には罠があって " ' - \ といった記号は変換が行われません。
なので以下のように変換する必要があります。
function toZenkaku($src){
$zenkaku = mb_convert_kana($src,'AS','UTF-8');
$zenkaku = str_replace('-','−',$zenkaku);
$zenkaku = str_replace("'","’",$zenkaku);
$zenkaku = str_replace('"','”',$zenkaku);
$zenkaku = str_replace("\\",'¥',$zenkaku);
return $zenkaku;
}
