Web

URL処理

URLの分解

//リファラを分解して取得
$u = parse_url($_SERVER['HTTP_REFERER']);

$u['scheme'];	// httpなどのプロトコル
$u['host'];	// サーバ名
$u['port'];	// サーバのポート(httpなら通常80)
$u['path'];	// 仮想パス
$u['query'];	// クエスチョンマーク ? 以降のクエリー文字列
$u['fragment'];	// ハッシュマーク # 以降のアンカー名
$u['user'];	// 認証時のユーザ名
$u['pass'];	// 認証時のパスワード

クエリー文字列⇔配列

//$arrの値からクエリー文字列を生成
$query = http_build_query($arr);

//クエリー文字列を $arr にセットする。
parse_str($query, $arr);

ファイルの読み込み

一括取得

file()
指定した名前のファイルを読み出し、配列として返す。ファイル名にはURLも使える。
$arr = file($filename,FILE_BINARY | FILE_IGNORE_NEW_LINES,NULL);
// 読み出し状態フラグ(|で区切って指定)
// FILE_USE_INCLUDE_PATH インクルードパスを探す
// FILE_IGNORE_NEW_LINES 配列の末尾に改行コードを入れない
// FILE_SKIP_EMPTY_LINES 空行を読み飛ばす
// FILE_TEXT   テキストモードで読み出す(バイナリと併用不可)
// FILE_BINARY バイナリモードで読み出す(テキストと併用不可)
file_get_contents()
指定した名前のファイルを読み出し、文字列として返す。
file()と大きく違う点は返り値が文字列であることと、読み込み開始のオフセット位置と最大バイト数を指定できること。
 $str = file_get_contents($filename,FILE_BINARY,NULL,$offset,$maxlen);
// 読み出し状態フラグ(|で区切って指定)
// FILE_USE_INCLUDE_PATH インクルードパスを探す
// FILE_TEXT   テキストモードで読み出す(バイナリと併用不可)
// FILE_BINARY バイナリモードで読み出す(テキストと併用不可)

file_get_contents

ヘッダやメソッドを指定してWebから取得。

simple_html_dom.php 簡単にHTMLタグをパースする

指定したHTMLタグ(と属性)から要素を取得できる。

$source =  mb_convert_encoding(file_get_contents($url),'UTF8','SJIS');
$html = str_get_html($source);

//<A ID="first"></A>タグがつく内容一覧のうち0番目の要素を取得。
$first = $html->find('A[id=first]',0)->innertext;

curl

	$cu = curl_init('http://www.google.co.jp/index.html');
	curl_setopt($cu, CURLOPT_HEADER, FALSE); //ヘッダを取得しない
	
	curl_exec($cu);	//アクセス開始(取得結果を標準出力に表示)
	curl_close($cu);	//アクセス終了

Basic認証

	$cu = curl_init();
	curl_setopt($cu, CURLOPT_URL, 'http://www.bar.com/foo.html');	//アクセスするURL
	curl_setopt($cu, CURLOPT_GET, TRUE);	//GETメソッドを使用
	curl_setopt($cu, CURLOPT_HEADER, FALSE); //ヘッダを取得しない
	curl_setopt($cu, CURLOPT_TIMEOUT, 30);	//時間切れの秒数を指定
	curl_setopt($cu, CURLOPT_RETURNTRANSFER, TRUE);	//curl_exec の結果を直接コンソールに表示ではなく文字列で取得
	curl_setopt($cu, CURLOPT_USERPWD, 'username:password'); //認証時のIDとパスワード
	
	$result = curl_exec($cu);	//アクセス開始
	curl_close($cu);		//アクセス終了

simplexml XMLファイルを処理(PHP5)

simplexml_load_file

//RSSデータの取得
$rss = simplexml_load_file('http://foo.bar.com/index.rdf');

// データは SimpleXMLElement オブジェクト形式で取得しているので
// 文字列にキャストする
$name = (string)$rss->item[0]->name; // 0番目の name 要素取得
$c = $rss->item[0]->children('dc',TRUE); // 0番目の dc:??? 要素取得
$date = (string)$c->date;

var_dump($name,$date);

urlencode と rawurlencode の違い。

  • urlencode (RFC 1738)
    「-」「_」「.」の3つを除くすべての非アルファベット文字を%xx形式に変換する。
  • rawurlencode (RFC 3986)
    「-」「_」「.」「~」の4つを除くすべての非アルファベット文字を%xx形式に変換する。
    ただし、php 5.3.0以前は「~」も変換していたため実質 urlencode と同じだったため加工が必要だった。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-28 (木) 23:52:11 (1201d)