close
(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 資料的步驟
- 將上述檔案存檔, 修改帳號/密碼, 和 Table 該注意的欄位.
- 執行 php pixnet_conver_url.php > new-url.sql
- 再次檢查 new-url.sql, 檢查 SQL 語法有沒有異常的東西.
- mysql -u root -p DBNAME < new-url.sql
- 執行後就完成轉換囉~
[資料來源]
http://www.wretch.cc/blog/fjumonkey&article_id=8558614
http://plog.longwin.com.tw/programming/2008/08/23/pixnet-version-url-convert-tool-2008
全站熱搜