【119日目】ページごとのアクセス解析をするPHPを作成したい-6
Posted: Last Update:
日記のアーカイブの表示順を変更する作業を途中に挟んでしまいましたが、今日はページごとのアクセス解析をするPHPに戻ります。ファイル名の書き出しはできるようになったので、数字をカウントアップする作業をするPHPを作りたい!
これまでの成果
さて、数日前にやった内容を思い出しつつ…。こんなPHPを書いていたのでした。今のところ「syntax error, unexpected '1'」というエラーが出ています。
$value = "$myurl/$urlfolder/$filenum";
$str = file_get_contents("$mypath/top/access.txt");
$findvalue = "/.".$value."[.*?]/";
preg_match_all($findvalue, $str, $matches, PREG_SET_ORDER);
if ($matches > 0){
$replace = preg_replace('[.*?]', '['.$1++.']', $matches[0]);
$str = preg_replace($findvalue, $replace[0], $str, 1);
$fp = fopen("$mypath/top/access.txt", "w");
fwrite($fp, $str);
fclose($fp);
}
else{
$fp = fopen("$mypath/top/access.txt", "c+");
fwrite($fp, "\n".$value." [1]");
fclose($fp);
}
数字をあげていくPHPを考える
自分のPHPを再度見直し…。「$findvalue = '/.'.$value.'<(.*?)>/i';」の「<(.*?)>」に数字が入っているはずなんですけど、これをうまく呼び出せていないのかな?
苦心しながらPHPの書き換え…。色々弄り倒しましたが、うまくいきません。
<?php
$value = "$myurl/$urlfolder/$filenum";
$str = file_get_contents("$mypath/top/access.txt");
$findvalue = '<'.$value.' count:([0-9]+)>';
preg_match_all($findvalue, $str, $matches, PREG_SET_ORDER);
if ($matches == 0 || $matches == false){
echo "nomatch";
$fp = fopen("$mypath/top/access.txt", "a+");
fwrite($fp, "\n".$value." count:1");
fclose($fp);
}
else{
foreach($matches as $value1){
echo "matched";
$replace = preg_replace('<'.$value.' count:([0-9]+)>', $value.' count:$2+1' ,$value1[0]);
}
$str = preg_replace($findvalue, $replace, $str, 1);
$fp = fopen("$mypath/top/access.txt", "w");
fwrite($fp, $str);
fclose($fp);
}
?>
$value = "$myurl/$urlfolder/$filenum";
$str = file_get_contents("$mypath/top/access.txt");
$findvalue = '<'.$value.' count:([0-9]+)>';
preg_match_all($findvalue, $str, $matches, PREG_SET_ORDER);
if ($matches == 0 || $matches == false){
echo "nomatch";
$fp = fopen("$mypath/top/access.txt", "a+");
fwrite($fp, "\n".$value." count:1");
fclose($fp);
}
else{
foreach($matches as $value1){
echo "matched";
$replace = preg_replace('<'.$value.' count:([0-9]+)>', $value.' count:$2+1' ,$value1[0]);
}
$str = preg_replace($findvalue, $replace, $str, 1);
$fp = fopen("$mypath/top/access.txt", "w");
fwrite($fp, $str);
fclose($fp);
}
?>
今現在エラーは出ていないのですが、書き出される数字が「count:+1」とかになっていて、要するに「count:$2+1」の「+1」が書き出されている状態ですね…。どうやって計算するんでしょう?
今日はここまで
解決できないまま時間が来てしまいました!SQLライトを使えば簡単にできる~という情報もあったのですが、ここまで来たのでなんとか自力でやりたい!
続きはまた明日頑張ります!
おまけのロードマップ
サイト作成がどのくらい進んでいるかロードマップで進捗を確認すると、ここまで進んでいます。
- 準備 - サイトの全体像を決める
- 使用するプログラミング言語を決めて環境を整える
- サイトの基本構造を作って公開する
- 収益化に最適なサイトにアップグレードする
- GoogleアドセンスとAmazonアソシエイトの申し込みをする ←完了!
- ローカルで簡単に入力ができるようにフォームを作る
- フォローアップ - より収益化に向いたサイト構造に変更する
