Archives by date

You are browsing the site archives by date.

【PHP】完全自分用変数ダンプ用関数。

var_dump()の拡張版。アプリごとに毎回書くのがめんどくさくなったのでメモ。

// 処理続行
function v() {
	$num = func_num_args();
	if($num != 0) {
		$args = func_get_args();
		echo "<pre>\n";
		for($i = 0; $i < $num; $i++) {
			var_dump($args[$i])."\n";
		}
		echo "</pre>\n";
	}
}

// 処理終了
function vd() {
	$num = func_num_args();
	if($num != 0) {
		$args = func_get_args();
		echo "<pre>\n";
		for($i = 0; $i < $num; $i++) {
			var_dump($args[$i])."\n";
		}
		echo "</pre>\n";
	}
	die();
}

 

【PHP】DOM要素をスクレイピングするSimple_HTML_DOMの使い方。

めも。

1, 下記URLからライブラリをダウンロード。

http://simplehtmldom.sourceforge.net/

2, 落としたファイルの中から「simple_html_dom.php」を探しインクルードなりオートロードなりする。

3, あとは下記のように使う。

$url = 'http://example.com/';

$html = file_get_html($url);

$a = $html->find('a');

foreach($a as $elem) {
	echo $elem->href;
}

上記は取得したページに存在するa要素のhref属性を全て出力する処理の例。

find()関数にはjQueryセレクタと同じ文字列を渡せるためとても使いやすい。

さらなる詳細や応用方法は下記本家ドキュメントを参照されたし。

http://simplehtmldom.sourceforge.net/manual.htm

 

【CentOS】tarコマンド自分用まとめ。

# 解凍
tar xvzf [ファイル名].tar.gz

# 圧縮
tar cvzf [圧縮後のファイル名].tar.gz [圧縮前のファイル名]

 

【Linux】同階層に作成できるディレクトリの上限。

調べたのでメモ。

Linuxで用いられるext3というファイルシステムでのディレクトリ上限数は32000とのこと。
「.」「..」を合わせると31998のディレクトリを生成できることになる。
そのため31999個目のディレクトリ生成を試みると「mkdir: Too many links」と怒られるそうだ。

さらなる詳細は下記ページを参照されたし。

http://wiki.berrystyle.jp/?Linux%20%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%82%8B%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E6%95%B0%E4%B8%8A%E9%99%90

 

【PHP】ヒアドキュメントの使い方。

ちょっとはまったのでメモ。

ヒアドキュメントとは複数行に渡る文字列を作成するための記述方法。

下記のように記述する。

$var = '変数は展開される。';
		
$str = <<< TEXT
「&lt;&lt;&lt; TEXT」から「TEXT;」の間に記述された文字列は、
全てが静的な文字列と解釈される。
なお、ヒアドキュメント内での$var
		
また「TEXT」は任意の文字列を設定することができる。
ヒアドキュメント終端のキーとセットになっていればOK。
TEXT;
		
var_dump($str);

↓

string(358) "「<<< TEXT」から「TEXT;」の間に記述された文字列は、 全てが静的な文字列と解釈される。 なお、ヒアドキュメント内での変数は展開される。 また「TEXT」は任意の文字列を設定することができる。 ヒアドキュメント終端のキーとセットになっていればOK。"

といった感じで使用する。

しかしここで一つ注意点として終端を表すキーを記述する場合、その行にはキー文字列及びコロン以外の文字は存在してはならない。
例えばキー文字列の前にインデント(タブやスペース)が存在していると、PHPはヒアドキュメントの終端を正しくパースできず、シンタックスエラーになってしまうので注意されたし。

 

【PHP】file_get_contentsで4系5系のエラーを無視して結果を取得する方法。

見に行ったページが403エラーなどを返してきた時も処理が止まらないようにしたい場合。

$url = 'http://example.com/';

$context = stream_context_create(array(
	'http' => array('ignore_errors' => true)
));
$html = file_get_contents($url, false, $context);

file_get_contents()の第3引数に上記のような設定を渡してやれば良い。
これで4系、5系のエラーを無視してページの取得結果を返却してくれるようになる。

 

【Unix】「/dev/null」に関するメモ。

自分用。

・/dev/nullはUnix系OSにおけるスペシャルファイル
・そこに書き込まれがデータは全て破棄される
・書き込み処理自体は成功とみなされる
・直接読み込んでもEOFしか返さない
・別名、ブラックホール、ビットバケツ

下記のように出力結果を全て破棄して実行命令だけ出したい場合に使う。

php hoge.php arg1 arg2 > /dev/null

 

【PHP】コマンドラインの引数をエスケープする。

例をメモ。

$arg1 = escapeshellarg($argv[1]);
$arg2 = escapeshellarg($argv[2]);

$cmd = "php /path/to/file.php $arg1 $arg2 > /dev/null & echo $!";

exec($cmd, $out);

escapeshellarg()関数を使用することで、引数をシングルクオートで囲い、既存のシングルクオートを全てエスケープしてくれる。