スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

多階層配列中の文字列を一括エンコード変換

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で起こる現象らしい。

解決法も上記ページに記載されているのでバッドノウハウして知っておこう。

AS3でドーナツのような型抜きSpriteを作る方法

AS3でドーナツのような型抜きSpriteを作るには同じ色を2回塗るといいらしい

var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000);
sprite.graphics.drawCircle(0,0,50);
sprite.graphics.drawCircle(0,0,30);
sprite.graphics.endFill();

donut.png
こんな感じになる
もちろん四角なども同様に可能。いまいち理由がわからないがそういう仕様のようだ。
この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;
}
プロフィール

maruware

twitter ID : maruware
WEBエンジニア

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。