目次

内容

目的

  • ブログで気に入った記事の一覧を投稿する際、リンク集を作成するのが面倒
    • URLを取得
    • タイトルを取得
    • タイトル文字列を<a href~で囲む
    • リンク計測用のJavaScriptを仕込む
  • これを自動的に生成するプログラムを開発

インストール方法

  • PHPでmbstringが使えるかを確認、CentOSでインストールされてない場合はyumでインストール
    # yum -y install php-mbstring
  • PHPでHTMLを解釈するためのライブラリ「scrape_func.php」を入手する
  • 下記のスクリプトとscrape_func.phpをWebサーバにアップする
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>タイトルゲッター2</title>
    </head>
    <body>
    日付とURLを入力
    <form action="./index.php" method="post">
    <input type="text" name="date" value="<?php echo date("Y/m/d");?>" /><br />
    <textarea name="url" rows="10" cols="40">
    <?php
    if( isset( $_POST["url"] ) )
        echo $_POST["url"];
    ?>
    </textarea>
    <input type="submit">
    </form>
    <?php
    // 利用する外部ライブラリ
    include( "scrape_func.php" );
    
    // 入力内容を解析
    if( ( $_SERVER[ "REQUEST_METHOD" ] = "POST" ) && ( isset( $_POST["url"] ) ) ){
        // 結果を格納するURL
        $urls = array();
        // 入力内容を処理
        foreach( explode( "\n", $_POST["url"] ) as $url ){
            $url = str_replace( "\r", "", $url );
            // URLパターンでなければ無視
            if( ! preg_match( "/^http:\/\//", $url ) ){
                continue;
            }
            // ページをHTTPでゲットしてタイトルを取得
    		$sData = getURL( $url );
    		$sData = mb_convert_encoding( $sData, "UTF-8", array( "utf-8", "euc-jp", "sjis" ) );
    		$sData = cleanString( $sData );
    		$title = getElement( "title", $sData );
            array_push( $urls, array( "url" => $url, "title" => $title ) );
        }
        // 出力結果を生成
        $result = "<ul>";
        foreach( $urls as $url ){
            $result
                .= '<li><a href="'. $url["url"] . '" onclick=\'tracklink(this,"'
                . $_POST["date"] . '");return false;\'>' . $url["title"] . '</a></li>';
        }
        $result .= "</ul>";
    }
    ?>
    結果
    <textarea name="url" rows="10" cols="40">
    <?php echo $result; ?>
    </textarea>
    </body>
    </html>

動作例


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-25 (日) 19:27:03 (444d)