(20071214原建20100307新增)

[教學]網誌補破網~

Pixnet 舊版到新版的網址轉換程式修補

研究所有 Pixnet Bloger 的連結, 幸好修改的部份很少.
  • 主要修改是舊網址: http://blog.pixnet.net/USERNAME/
  • 改成新網址: http://USERNAME.pixnet.net/blog/
  • 其它連結除了 trackback 外, 都沒什麼大變動.

所以要處理的簡單列如下, 除了 trackback 外, 基本處理法都可以用同一個 regex 解決:

  • http://blog.pixnet.net/USERNAME/ => http://USERNAME.pixnet.net/blog/
  • http://blog.pixnet.net/USERNAME/post/1234 => http://USERNAME.pixnet.net/blog/post/1234
  • http://blog.pixnet.net/USERNAME/post/1234#article-area => http://USERNAME.pixnet.net/blog/post/1234#article-area
  • http://blog.pixnet.net/USERNAME/category/1234/1 => http://USERNAME.pixnet.net/blog/category/1234/1
  • http://blog.pixnet.net/USERNAME/trackback/1234 => 砍掉(不知道這個為何會進來. XD)

程式(pixnet_conver_url.php)大致如下: (假設有一個 Table url 是記錄 URL 的資訊, 欄位內容是 url_id, url_url)

<?php
$dbh = mysql_connect('localhost', 'root', 'password');

$sql = 'SELECT * FROM url WHERE url_url LIKE "http://blog.pixnet.net/%"'; // 只抓 Pixnet Url
$r = mysql_query($sql, $dbh);
while ($t = mysql_fetch_assoc($r)) {
   preg_match('#http://blog.pixnet.net/(.[^/]+)(.*)?#', $t['url_url'], $match);
   if (preg_match('/\/trackback\//', $match[2])) {
        echo "DELETE FROM url WHERE url_id = {$t['url_id']};\n";
   } else {
        $match[1] = rtrim($match[1], '/');
        $new_url = "http://{$match[1]}.pixnet.net/blog{$match[2]}";
        echo "UPDATE url SET url_url = '$new_url' WHERE url_id = {$t['url_id']};\n";
    }
}
?>

轉換 Database 資料的步驟

  1. 將上述檔案存檔, 修改帳號/密碼, 和 Table 該注意的欄位.
  2. 執行 php pixnet_conver_url.php > new-url.sql
  3. 再次檢查 new-url.sql, 檢查 SQL 語法有沒有異常的東西.
  4. mysql -u root -p DBNAME < new-url.sql
  5. 執行後就完成轉換囉~

[資料來源]

http://www.wretch.cc/blog/fjumonkey&article_id=8558614

http://plog.longwin.com.tw/programming/2008/08/23/pixnet-version-url-convert-tool-2008

arrow
arrow
    全站熱搜

    金魚不是魚 發表在 痞客邦 留言(0) 人氣()