top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_1266

紹介した(先)リンク集:まずは、よくご利用いただいている「ブログで紹介したリンク集」の更新。引越し後の後片付け その1:やるべし ・・・ 【創ったmetaboy 引越】

 2010-02-11
 「創ったmetaboy」の引越しを終えたはいいが、
 後片付けが大変ですよねぇ。業者に頼みわけにもいかないし・・・

 さて、まずはこのブログでもアクセス数多く、
 煩雑にご利用いただいている
 ・(この)ブログで紹介したリンク集
  「創るmetaboy - 紹介した(先)リンク集」の更新
  創るmetaboy - 紹介した(先)リンク集
  ブログ上部のメニューからもゆけます。


 ※実は結構簡単なメンテナンスにしているのですよ。
  現在は、MySQLのデータベース管理で動いているのですが
  いちいち「手打ち」なんて時間ありませんからねぇ。
 ※セキュリティ対策完璧ではないので、
  ツールとして公開するには至りませんが、
  方法を記録公開しておきます。
  参考になる方、いるかも?


  追記に  ▼


FC2ブログランキング にほんブログ村 IT技術ブログ Webサイト構築へ ブログ王ランキング 人気ブログランキング 人気ホームページランキングへ


more

************************************************
◎  創るmetaboy - 紹介した(先)リンク集 の巻
              :創ったmetaboy 引越

************************************************


 ・現在これをメンテナンスしているツールは
  アクセス制限をかけ、必要なときだけサイトにおく
  方法で行っています。
  ※サーバーにある程度の負荷かけますし
   完璧なセキュリティチェック終えていないので・・・


 【方法】
  ・php の file_get_contents を利用して
  ・ブログのコンテンツ頁を ループ取得
  ・あらかじめセットしてある コメントタグ
   を利用して
   ・メインボディ部分を抜き出し
  ・正規表現で、リンク部分を抽出
  ・これもあらかじめセットしている
   ・除外URLをはずして
  ・MySQLに楽に放り込める
   ・TAB区切り形式にして
  ・テーブルに組み込んでいます。


 【実践】
  ・一部はセキュリティ的に公開できないので
   中心になるところを抜粋。


  ■PHPプログラム
   ********.php?st=1000&ed=1100 などのように
   コンテンツ頁のナンバーを
   from ~ to で呼び出します。


 

   □エスケープ処理
    ※一応のエスケープ処理 と 数値チェック
$st = $_GET['st']; $st = ckEscape($st);
$ed = $_GET['ed']; $ed = ckEscape($ed);

     ※ckEscapeはオリジナルの関数

 

   □サイトには
    ・FC2ブログのテンプレート編集画面で、
     メインコンテンツ部分にあたるところを、
<!--###thisbody_st###-->
<!--###thisbody_ed###-->
     で挟んでます。

 

    □その部分を抽出し、
     ・正規表現で、リンク記述部分を抜き出す関数を
      用意。
function getBlogEntryBody($buf) {
$buf = substr($buf, strpos($buf, '</head>')); $pos_st = strpos($buf, '<!--###thisbody_st###-->');
$buf = substr($buf, $pos_st); $pos_ed = strpos($buf, '<!--###thisbody_ed###-->');
$buf = substr($buf, 0,$pos_ed);
$buf = preg_replace("/(\n|\r)/","",$buf);

$linkpat = "/<a[^>]+href=[\"']?([-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)[\"']?[^>]*>(.*?)<\/a>/ims";
if(preg_match_all($linkpat, $buf, $res)){
}else{ return false; }
$titlepat = "/<a(?:\shref[^>]*)?>(.*?)(?=<\/a\s*>)/i";
if(preg_match_all($titlepat, $buf, $res2)){
}else{ return false; }
return array($res[1], $res2[1]);
}

 

   □テーブルに組み込むための、txtファイルは
    あらかじめ用意され、今までのものも記録し
    重複チェックを楽に行うようにしてます。
    ・まずは、そのファイル自体を読み込んでおき、
$ckdir = "/*****/";
$ckfile = "*****.txt";
$ckbuf = file_get_contents($ckdir.$ckfile);

    ・引数の数値に従いループを廻します。
for($i=$st;$i<=$ed;$i++){
$thisurl = $ckstr_url."blog-entry-".$i.".html";
$buf = file_get_contents($thisurl);
if($buf){

# ここで処理
# ここはお見せできないのですが、
# たいしたことはしてません。
# 用意した関数を呼び出し、
# リンクを抜き出した後、
# 現在のtxtファイルに含まれているかどうかのチェック
# 新しいものであれば、配列変数に組み込み。

}
}

     ※こういうときは、forループが楽ですね。

 

   □後は、txtファイルを上書き。
if($tempout!=''){
if (file_exists($ckdir.$ckfile)){
$fp = fopen($ckdir.$ckfile, 'a+');
if (!$fp) { // 開けなかった
}else{
$tempout = mb_convert_encoding($tempout, 'utf-8', 'ASCII,JIS,EUC-JP,SJIS');
fwrite($fp, $tempout); // 書き込み
fclose($fp);
}
}
}
exit;

    ※FTP取得して、
     テーブルに組み込むだけ。

   □組み込みは、telnetで mysqlコマンドで入り
    "loaddata ~" 利用するのが確実ですが、
    たいした大きさではないので、phpMyAdmin
    利用させていただいて、入れ替えます。


  ■肝
   ポイントはやはり、正規表現でしょう。
   いろいろ試しましたが、今回の方法も
   ネット上で方法を公開されている先人の知恵 を
   お借りしました。
   ただ大きな失敗をしてしまい、これを作成したときの
   ブックマークが紛失。
   たくさんの方の頁を渡り歩き、どの方のものを参考に
   させていただいたか、わからなくなってしまったのです。
   ※この場を借りて、お礼申し上げます。
    もし、「あぁ、それ俺だよ。この頁だよ」とか
    「私のソース使ってるぅ・・・」という方は
    できましたらお教えください。リンク張らせていただきます。


  現在、2526 件
  ・面白いリンク先 たくさんありますので
   どうぞご利用ください。


創るmetaboy - 紹介した(先)リンク集
創るmetaboy - 紹介した(先)リンク集 ただのリンクリストですが、
 それを紹介したときの記事のリンク
 もご用意してますので、ご参考に
 されてください。



 さて、次は・・・と。

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/1266-d24aa8dc
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。