YouTubeのタグ部分を取得したい。ってさぁ。

YouTubeのtitleタグ部分だけ取得してみました。取得するのは簡単ですが、文字化けをどうするかで時間を取りまして。まぁ、なんとか表示するに至り・・・・。

*HTMLのshift_jisの部分やmb_convert_encodingのSJISはそれぞれの環境によって変化させてください。

//match[0]には、<title>タグ付きの文字列が、
//match[1]には、<title>タグなしの文字列が入る。


<meta http-equiv="Content-Type" content="text/html; charset=Shift_jis"><!-- HTMLの文字コードは、環境がWindowsだったのでShift_JISへ -->
<?php

//正規表現
$pattern = "<title>(.*)<\/title>";//Vに見えるけどバックスラッシュです。

$html = file("http://www.youtube.com/watch?v=H-sFGBvxPoY");//サイトのURL
$str = implode("", $html);

if(preg_match("/".$pattern."/i", $str, $match)){
		$string  = mb_convert_encoding($match[0],"SJIS", "UTF-8");//UTF-8からShift-JISへ変換する。
		$string2 = mb_convert_encoding($match[1], "SJIS", "UTF-8");//UTF-8からShift-JISへ変換する。
		
print "<b>タグあり文字列:</b>".$string."<br />";
print "<b>タグなし文字列:</b>".$string2."<br />";
}


?>

いろいろ試したが、UTF-8からShift-JIS,htmlの文字コードもshift_jisだと成功した!!

UTF-8 → Shift_JIS

YouTubeがどんな文字コードを使っているのか分かりませんが、おそらくUTF-8だと思います。それならばGoogleもかなぁ?


文字コードについて、PHPで変換すべきか?HTMLで変換すべきか?
(他のサイトからの情報を)
html 文字コード

→ソースを見るとしっかりと取得している。

PHPを使って文字コードを変換してみる(shift-jisに)
php 文字コード

PHP概説めにー : こりゃまためんどい文字コード
体系的、経験的に文字コードについて紹介されている。見やすい。

PHPの文字化けを本気で解決する
こっちの方がわかりやすいか?

いろんなコツ

・問題にぶつかれば、検索したり、質問する。
→(何が分からないのか?何が問題なのか?をまず具体的にすること。問題が特になければ悩む必要もないし、調べる必要もない。まず、目標をしっかりと確立するしかない。そうしないと、余計なものを調べて時間を無駄することが多い。ピンポイントで今欲しい情報だけを。。。)
・何から始めればいいのか?プログラミング業界だったら情報が雑多していて迷ってしまう。俯瞰した目でみよう。
→(信頼した情報を集め分析することが大切。)
・1度決まった手順の処理を作ったらそれを(まるでプログラミングのように)関数化しルーチンワークとしよう
→(反復して、その処理を無意識でできるようになろう。)
・Todoリストのようなものをつくり、やり終わったら赤ペンなどで線を引く。
→(このとき、注意してほしいのが処理を増やしすぎて、増やすことが目的となり、結局ぜんぜん達成できていない(つまり実行ではなく予定の段階しかしてない)。などという状況にならないようにすること。ブログに今日すること・したことを1つの記事にリストするだけでもやる気が違うと思う。

C/C++ プリプロセッサ一覧

・ヘッダーファイルをきちんと解析したいのでプリプロセッサを理解する。
C言語 プリプロセッサ (Google検索)
C言語 ヘッダーファイル (Google検索)
C言語 プリプロセッサより


まずは、C言語の標準ライブラリから調べる。特に、stdio.hから調べてみる。

#ifdef
シンボルが定義されているときに#ifdefから#endifまでのプリプロセッサ命令を実行する。これは、if文の条件分岐と一緒ですね。

#ifdef シンボル名
シンボルが定義されているときに実行するプリプロセッサ命令
#endif

#elseを使って、真がダメなら、次の条件を実行するという命令もできます。

#ifdef シンボル名
シンボル名が定義されているときに実行するプリプロセッサ命令
#else
シンボル名が定義されていないときに実行するプリプロセッサ命令
#endif

#pragma
ホストマシンやオペレーティングシステムに固有の機能をサポートする。
例えば、データが置かれるメモリ領域の正確な管理や、バージョン情報をプログラムコードに埋め込んだりします。固有のものなので、コンパイラごとに使用できる機能が異なる。

既定義マクロ
__FILE__ソースファイル名(Windowsはフルパス、Solarisはファイル名のみ)
__LINE__行番号
__DATE__コンパイル日付
__TIME__コンパイル時間
__STDC__ANSI規格対応ならば1、ANSI規格非対応ならば0

PHP セッション・クッキー関連 リンク集

【セッション編】
php セッション (Google検索結果)


ショッピングサイトや、ログイン時に使用することが多い。

10日で覚えるPHPのキソ 第 10 回 セッション(SESSION)
HTTPの接続は、通常、Webサーバーへリクエストし、そして、レスポンスを受け取ると、通信を切ってしまう。そのため、住所などの情報を入力しても画面が変われば(前のページに戻るなど)消えてしまいます。
そんな時に継続した通信を行うために必要なのがセッション機能です。そして、セッションにはクッキーを使う。

セッション機能には、「$_SESSION」というスーパーグローバル変数に値を格納する。


【クッキー編】
10日で覚えるPHPのキソ 第 9 回 クッキー(COOKIE)
ブラウザが送信したクッキーは「$_COOKIE」というスーパーグローバル関数を使う。

Perl - eval()とは?warn、dieも。

perl eval (Google検索結果)
Perlリファレンス eval
eval()


eval(expr)やeval{...}で、ブロックや括弧内をPerlスクリプトとみなして実行する。最後に実行した命令の結果が戻り値として返される。
エラーやdieだったら、undefineを返し、$@にエラーメッセージを格納する。evalを用いて、Perlのプログラムの異常終了を防ぐことができる。

print eval("3 * (5 + 3)")."\n";

$x = 10; $y = 0;
$ans = eval{ $x / $y; };#0で割った場合
if($@) { warn "WARNING: $@"; } #エラーを$@に格納していたら、

open(OUT, "> xx");
eval{ flock(OUT, 2); };
if($@) { warn "WARNING: $@"; }

warnは、dieと同様にのメッセージを標準エラー出力STDERRに出力する。ただし、プロセスは終了しない。

warn(list)

pel warn (Google検索結果)
Perlリファレンス warn

dieは、perlスクリプトを終了する。listにSTDERRに出力し、$!の値(もし$!が0なら($?>>8)の値)をperlスクリプトの戻り値とする。
evalの中で使用した場合はスクリプトを終了しないで、listを$@に設定し、
evalがundefineで終了する。listの末尾に改行がない場合は、スクリプト名や行番号などが末尾に付加される。

die(list)

open(IN, $file) || die "Can't open file.\n";

perl die (Google検索結果)

Perl - use strictとは?(useについての説明も)

perl strict (Google検索結果)
Perl/CGIに必ず登場するuse strictの解説(初心者向け)


strict
下記の方のリンクの解説を見ると、use strictの効果は端的に言ってタイプミスを見つけてバグが減ることだそうで、そして、use strictを使うと、変数を宣言する前にmyという予約語をつけるのが必須になるという。
これが書かれていないプログラムは品質を疑ったほうがいいとも言われている。

use strict;

my $var;

print $var;

ちなみに、useは、外部モジュールを呼び出すための
関数です。

use CGI;

perl use (Google検索結果)
Perlリファレンス use