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だと成功した!!
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()
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 - use strictとは?(useについての説明も)
・perl strict (Google検索結果)
・Perl/CGIに必ず登場するuse strictの解説(初心者向け)
use strict; my $var; print $var;
ちなみに、useは、外部モジュールを呼び出すための
関数です。
use CGI;
Perl - chomp関数
#!/usr/bin/perl $message = "こんにちは\n"; $message2 = "さようなら"; chomp($message); print $message.$message2; 【表示結果】 こんにちはさようなら