PHPでファイル入出力

ファイル読み込み

<?php

$data = file_get_contents("sample.txt");

?>
<?php

$fp = fopen("sample.txt", "r");
while ($line = fgets($fp)) {
  echo "$line<br />";
}
fclose($fp);

?>

ファイル書き込み

<?php

file_put_contents("sample.txt", "ファイルへの書き込みサンプル");

?>
<?php

$fp = fopen("sample.txt", "w");
fwrite($fp, "ファイルへの書き込みサンプル");
fclose($fp);

?>

ファイル追記

<?php

$fp = fopen("sample.txt", "a");
fwrite($fp, "ファイルへの追記サンプル");
fclose($fp);

?>

ネタ元

PHPでXPathスクレイピング

CME日経先物の最新四本値取得

$html = file_get_contents("http://www.cmegroup.com/trading/equity-index/international-index/nikkei-225-yen_quotes_settlements_futures.html");

$dom = new DOMDocument();
@$dom->loadHTML($html);
$xml = simplexml_import_dom($dom);


$ret = $xml->xpath("//*[@id=\"cmeTradeDate\"]/option[@selected='selected']");
//var_dump($ret);

$yyyymmdd = "19000101";
foreach( $ret as $e  ){
	$yyyy = substr($e["value"],6,4);
	$mm = substr($e["value"],0,2);
	$dd = substr($e["value"],3,2);

	$yyyymmdd = $yyyy . $mm . $dd;

	//echo $yyyymmdd;
	//echo $e;
}

$ret = $xml->xpath("//*[@id=\"settlementsFuturesProductTable\"]/tbody/tr[1]");
//var_dump($ret);

$outStr = "";
foreach( $ret as $e  ){

	$open = $e->td[0];
	$high = $e->td[1];
	$low = $e->td[2];
	$last = $e->td[3];
	$last = substr($last,0,-1);
	$volume = $e->td[6];
	$volume = str_replace(",","",$volume);

	$outStr = "," . $yyyymmdd . "," . $open . "," . $high . "," . $low . "," . $last . "," . $volume;
}

追記

ChromeでXpath取得したとき、tbody入ってる場合、抜かないとエラーになることある

Html Agility PackとXPathでスクレイピング

HtmlAgilityPackを使うにはプロジェクトごとにNuGetから導入する。

  • ソリューションエクスプローラーで導入したいプロジェクトを選択しておいて、メニューバーから[プロジェクト]-[NuGet パッケージの管理]を選ぶ
  • すると、[NuGet パッケージの管理]ダイアログが表示されるので、左側のペーンで[オンライン]を選択してから、右上の検索ボックスに「HtmlAgilityPack」(空白なし)と入力して[Enter]キーを押す。
  • いくつかのパッケージが表示されるので、その中から[HtmlAgilityPack]を選び、そこに表示された[インストール]ボタンをクリックする


コード例

Dim wc As WebClient = New WebClient()
Dim htmlStr As String
htmlStr = wc.DownloadString("http://www.cmegroup.com/trading/equity-index/international-index/nikkei-225-yen_quotes_settlements_futures.html#tradeDate=11/22/2016")

Dim html As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument()
html.LoadHtml(htmlStr)

Dim tags As HtmlAgilityPack.HtmlNodeCollection
tags = html.DocumentNode.SelectNodes("//*[@id=""settlementsFuturesProductTable""]/tbody/tr[1]")

Dim node As HtmlAgilityPack.HtmlNode
For Each node In tags
    Trace.WriteLine(node.InnerText)
Next


ネタ元

お名前.comで取得したドメインを移管せずにさくらインターネットで使用するときの設定方法

・さくらのコントロールパネルでドメインを設定
・さくらのファイルマネージャーでドメインをアップするフォルダを作成
・お名前.comでネームサーバーを変更
・さくらのファイルマネージャーでアクセス設定

ネタ元

excelVBAでロックしたセルに、シート保護を解除せずにデータを書き込む

こんな感じでシート保護を設定(UIのみ)を設定する

Option Explicit

Private Sub Workbook_Open()
    ' 一旦、シート保護を解除
    ActiveSheet.Unprotect
    ' シート保護を設定(UIのみ)
    ActiveSheet.Protect UserInterfaceOnly:=True

    ActiveWindow.ScrollRow = 1
End Sub

ネタ元