2010年12月8日水曜日

Twitpic等のサムネイル画像取得

$url = 'Twitpicなどの短縮URL';

$_url = parse_url($url);
hostCheck($_url['host'], $_url['path']);

function hostCheck($host, $path){
if(strcmp($host,"twitpic.com")==0){
$thumbPath = "http://". $host. "/show/thumb". $path;
echo "twitpic : ";
}else if(strcmp($host,"yfrog.com")==0){
$thumbPath = "http://". $host. $path. ".th.jpg";
echo "yfrog : ";
}else if(strcmp($host,"img.ly")==0){
$thumbPath = "http://". $host. "/show/thumb". $path;
echo "img.ly : ";
}else if(strcmp($host,"pic.im")==0){
$thumbPath = "http://". $host. "/website/thumbnail". $path;
echo "pic.im : ";
}else if(strcmp($host,"imgur")==0){
$thumbPath = "http://i.imgur.com/". $path. "l.jpg";
echo "imgur : ";
}else if(strcmp($host,"movapic.com")==0){
$thumbPath = "http://image.movapic.com/pic/t_". $path. ".jpeg";
echo "携帯百景 : ";
}else if(strcmp($host,"ow.ly")==0){
$thumbPath = "http://static.ow.ly/photos/thumb/". $path. ".jpg";
echo "ow.ly : ";
}
//画像であるかの確認
if(@exif_imagetype($thumbPath)){
echo '<img src="http://www.blogger.com/.%20$thumbPath." />';
}
}

Twitpic 等の画像投稿サービスのサムネイル画像の URL

ページ URL を書き換えるだけでサムネイル画像が表示できるもの

  • Twitpicドキュメント
    • ページ: http://twitpic.com/
    • サムネイル画像: http://twitpic.com/show//
      • : “mini” or “thumb”
  • 携帯百景
    • ページ: http://movapic.com/
    • サムネイル画像: http://image.movapic.com/pic/_.jpeg
      • : “s” or “t”
  • はてなフォトライフ
    • ページ: http://f.hatena.ne.jp//YYYYMMDD
    • サムネイル画像:http://img.f.hatena.ne.jp/images/fotolife///YYYYMMDD/YYYYMMDD_.jpg
      • : “120″ or “m”
  • Mobypictureドキュメント
    • ページ: http://moby.to/
    • サムネイル画像: http://moby.to/:
      • : “thumbnail”, “small”, “square” or “medium”
  • yFrogドキュメント
    • ページ: http://yfrog.com/
    • サムネイル画像: http://yfrog.com/.th.jpg
  • PhotoShare
    • 短縮URL: http://bctiny.com/p
    • ページ: http://www.bcphotoshare.com/photos//
    • サムネイル画像: http://images.bcphotoshare.com/storages//.jpg
      • : “thumbnail”, “large”, “thumb68″ or “thumb180″
  • img.ly ドキュメント
    • ページ: http://img.ly/
    • サムネイル画像: http://img.ly/show//
      • : “thumb” or “mini”
  • Twitgooドキュメント
    • ページ: http://twitgoo.com/
    • サムネイル画像: http://twitgoo.com/show//
    • サムネイル画像: http://twitgoo.com//
      • : “thumb”, “mini” or “img”
  • pic.imドキュメント
    • ページ: http://pic.im/
    • サムネイル画像: http://pic.im/website/thumbnail/
  • YouTubeドキュメント
    • 短縮URL: http://youtu.be/
    • ページ: http://www.youtube.com/watch?v=
    • ページ: http://www.youtube.com/watch#!v=
    • サムネイル画像: http://i.ytimg.com/vi//.jpg
      • : “default”, or “hqdefault”
  • imgur
    • ページ: http://imgur.com/.jpg
    • サムネイル画像: http://i.imgur.com/.jpg
      • : “s” or “l”
  • Plixi (旧TweetPhoto) (ドキュメント
    • ページ: http://plixi.com/p/
    • ページ: http://tweetphoto.com/
    • サムネイル画像: http://api.plixi.com/api/TPAPI.svc/imagefromurl?size=&url=<ページURL>
      • : “thumbnail”, “medium” or “big”
  • Ow.ly
    • ページ: http://ow.ly/i/
    • サムネイル画像: http://static.ow.ly/photos/thumb/.jpg


2010年10月21日木曜日

phpの何回かに数回起こるメールの文字化け

phpのメール送信で今までに遭遇した事のない文字化けの現象に対して

サーバーはPHP Version 4.1.2

ファイルをアップロードすると、強制的に改行コードをLF(UNIX)にされる仕様。

問題としては

フォームによるメール送信で100回中、何割かの確立で文字化けを起こしていた。


●問題を起こしていた状況

元々サイト自体をshift_jis(PCサイト)で制作されていたので、
限定的にutf8にてフォームを実装。
テストすると問題なし。
複数回テストをすると何割かに文字化けが発生する不安定な状況に。

mb_convert_encodingなどで文字コードを変換するも一向に直らない。

mb_detect_encodingで調べた結果、

そもそもhtmlからPOSTされている時点で文字コードがEUC-JPで渡されていることに気づく。

formタグに accept-charset="shift_jis"を書いても変わらず、なおもEUC-JPでポストされ続ける。
ブラウザからのPOSTはEUC-JPもしくはASCIIがデフォルトらしい。

結果的にPOSTする側とメール送信する側の文字コードをEUC-JPで統一し、
メール本文を以下の様にEUC-JPに変換して送信。
$body = mb_convert_encoding($body, "euc-jp","AUTO");


解決しました。
今回は文字コードを変更しても内容に影響のないサイトだったけど、
UTF-8でDBから情報引き出したりしてるサイトだったらと思うと冷や汗ものだった。

この問題ってサーバーによって生まれるのかな?
他のサーバでは問題のなかったソースコードでのトラブル。

2010年5月7日金曜日

jquery使用時にsetTimeoutでエラー

カート入力時などに、
フェードイン、アウトの処理で「追加しましたよ」とか、「削除しましたよ」とか出そうとした時。

動作としては問題なく動いたが、エラーコンソールではエラーが発生。

まず、

$("#addSign").fadeIn("slow");
setTimeout($("#addSign").fadeOut("slow"), 3000);

と直接setTimeoutにエフェクトを書いた場合は、
missing after element listって出ました。

なので、今度は一度関数をかませて、

$("#addSign").fadeIn("slow");
setTimeout(fadeOutFunc("#addSign"), 3000);
function fadeOutFunc(divName){
$(divName).fadeOut("slow")
}

とおこなったところ。
useless setTimeout call (missing quotes around argment?)
とエラーが発生。

クォーテーション入れてるけどなーと
思って検索かけると海外のフォーラムでヒントを見つけました。

setTimeout('fadeOutFunc("#addSign")', 3000);

どうやら関数を呼ぶときも、シングルで囲んでやる必要があったみたい。
引数があったからかな?
とりあえず問題は解消したので、原因はほっておきます。

あとで調べる。

2010年1月14日木曜日

array_multisort関数に関して

PHPのarray_multisort関数が激便利だったので紹介
非常にわかりやすかったので、リンク

http://www.akiyan.com/blog/archives/2007/10/phparray_multis.html

2010年1月13日水曜日

swfAddressでのまさかのエラー

firefoxでのエラーコンソールに
「obj.parentNode.so.call is not a function」
と表示されurlが遷移してくれない問題があった。

こんなこと抜けてたのかということで、
swfAddressはflash8以降ならできるとわかっていたのに、
以下のように記述していた前のソースを利用していた為につまっていた。

var so = new SWFObject("swf/hogehoge.swf", "website", "100%", "100%", "7", "#CCCCCC");


swfObjectで8以降とキチンと書いてあげないと反応しないんですね。
var so = new SWFObject("swf/hogehoge.swf", "website", "100%", "100%", "8", "#CCCCCC");