記錄一下自己的代碼,主要功能爲WordPress數據庫鏈接與操作,我覺得以後可能會用到,所以就再次記錄一下,等下次使用的話,我就可以直接複製黏貼了,事實證明,記筆記真的可以偷懶
第一次代碼
<?php
// 引入WordPress的核心文件
require_once(dirname(__FILE__) . '/wp-load.php');
// 連接數據庫
$host = 'localhost';
$user = '';
$password = 'G2b8pG83Ypnk8rMR';
$database = '';
$mysqli = new mysqli($host, $user, $password, $database);
if ($mysqli->connect_errno) {
die('連接失敗: ' . $mysqli->connect_error);
}
// 執行查詢操作
global $wpdb;
$table_name = $wpdb->prefix . 'posts'; // 獲取表名
$sql = "SELECT id, post_title as title, post_content as content, guid as link FROM {$wpdb->prefix}posts WHERE `post_type` = 'post'";
// `post_content` LIKE '%class=\"panel-body\"%' and
$result = $mysqli->query($sql);
// 循環判斷並處理數據
if ($result !== false) {
foreach ($result as $row) {
$content = $row['content'];
/* 使用正則表達式匹配所有的a標籤,正則:/<a\s+[^>]*?href=[\'"]([^\'"]*?)[\'"][^>]*?>/i */
// 使用正則表達式匹配所有子頁面的具體鏈接
$matches = [];
preg_match_all('/【--(.*?)--】/i', $content, $matches);
if(!empty($matches[1])){
$herf = "/{$row['id']}/";
$href_array[$herf] = $matches[1][0];
echo "成功匹配子頁面信息,本站子頁面鏈接【<a href='{$herf}' style='color:green;' target='_blank'><b>{$herf}</b></a>】,採集站頁面鏈接【{$matches[1][0]}】,標題爲【<a href='{$herf}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
}
$num = count($href_array);
echo "<p>共計{$num}個子頁面</p>";
}
// 循環判斷並處理數據2
if ($result !== false) {
foreach ($result as $row) {
$content = $row['content'];
foreach ($href_array as $k=>$v){
$original_content = $content;
$content = str_replace("href=\"{$v}\"","href=\"{$k}\"",$content);
if ($content !== $original_content) {
echo "----查詢到一個子頁面鏈接,已將子頁面鏈接修正至本站,鏈接【<a href='{$k}' style='color:green;' target='_blank'><b>{$k}</b></a>】<br>";
}
}
// 更新文章內容
$sql = "UPDATE {$wpdb->prefix}posts SET post_content = '{$content}' WHERE ID = {$row['id']}";
$mysqli->query($sql);
if ($mysqli->errno) {
die('更新失敗: ' . $mysqli->error);
}else{
echo "已處理文章【<a href='{$row['link']}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
// 更新文章發佈時間和修改時間
$wpdb->update(
"{$wpdb->prefix}posts",
array(
// 'post_modified' => current_time('mysql'),
'post_modified_gmt' => current_time('mysql', 1)
),
array('ID' => $row['id'])
);
// 處理文章
// if (isset($matches[1])) {
// $targetDiv = $matches[0];
// print_r($targetDiv);
// // 在目標 <div> 元素中使用正則表達式匹配文章標題,並修改爲帶鏈接的形式
// preg_match_all('/<h\d>(.*?)<\/h\d>/is', $targetDiv, $matches);
// foreach ($matches[1] as $match) {
// if (strpos($content, $match) !== false && $match !== $row['title']) {
// $link = '<a href="' . $row['link'] . '">' . $row['title'] . '</a>';
// $targetDiv = str_replace($match, $match . $link, $targetDiv);
// }
// }
// // 替換原文中的目標 <div> 元素爲修改後的內容
// $content = str_replace($matches[0], $targetDiv, $content);
// // 更新文章內容
// $sql = "UPDATE {$wpdb->prefix}posts SET post_content = '{$content}' WHERE ID = {$row['id']}";
// $mysqli->query($sql);
// if ($mysqli->errno) {
// die('更新失敗: ' . $mysqli->error);
// }
// // 更新文章發佈時間和修改時間
// $wpdb->update(
// "{$wpdb->prefix}posts",
// array(
// 'post_modified' => current_time('mysql'),
// 'post_modified_gmt' => current_time('mysql', 1)
// ),
// array('ID' => $row['id'])
// );
// }
}
}
// 關閉數據庫連接
$mysqli->close();第一次代碼優化
<?php
// 引入WordPress的核心文件
require_once(dirname(__FILE__) . '/wp-load.php');
// 連接數據庫
$host = 'localhost';
$user = '';
$password = 'G2b8pG83Ypnk8rMR';
$database = '';
$mysqli = new mysqli($host, $user, $password, $database);
if ($mysqli->connect_errno) {
die('連接失敗: ' . $mysqli->connect_error);
}
// 執行查詢操作
global $wpdb;
$table_name = $wpdb->prefix . 'posts'; // 獲取表名
$sql = "SELECT id, post_title as title, post_content as content, guid as link FROM {$wpdb->prefix}posts WHERE `post_type` = 'post'";
$result = $mysqli->query($sql);
// 判斷查詢結果
if ($result !== false) {
$href_array = array(); // 存儲子頁面鏈接
while ($row = $result->fetch_assoc()) {
$content = $row['content'];
/* 使用正則表達式匹配所有的a標籤,正則:/<a\s+[^>]*?href=[\'"]([^\'"]*?)[\'"][^>]*?>/i */
// 使用正則表達式匹配所有子頁面的具體鏈接
$matches = [];
preg_match_all('/【--(.*?)--】/i', $content, $matches);
if (!empty($matches[1])){
$herf = "/{$row['id']}/";
$href_array[$herf] = $matches[1][0];
echo "成功匹配子頁面信息,本站子頁面鏈接【<a href='{$herf}' style='color:green;' target='_blank'><b>{$herf}</b></a>】,採集站頁面鏈接【{$matches[1][0]}】,標題爲【<a href='{$herf}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
}
$num = count($href_array);
echo "<p>共計{$num}個子頁面</p>";
// 循環更新文章內容
foreach ($href_array as $k => $v) {
$sql = "UPDATE {$wpdb->prefix}posts SET post_content = REPLACE(post_content, 'href=\"{$v}\"', 'href=\"{$k}\"') WHERE post_content LIKE '%href=\"{$v}\"%' AND `post_type` = 'post'";
$mysqli->query($sql);
if ($mysqli->errno) {
die('更新失敗: ' . $mysqli->error);
} else {
echo "已處理文章【<a href='{$row['link']}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
}
// 更新文章發佈時間和修改時間
$wpdb->query("UPDATE {$wpdb->prefix}posts SET post_modified = NOW(), post_modified_gmt = UTC_TIMESTAMP() WHERE `post_type` = 'post'");
}
// 關閉數據庫連接
$mysqli->close();第二次更新,新增加緩存功能.....主要是服務器503警告
<?php
// 引入WordPress的核心文件
require_once(dirname(__FILE__) . '/wp-load.php');
// 連接數據庫
$host = 'localhost';
$user = 'www_coserhub_net';
$password = 'G2b8pG83Ypnk8rMR';
$database = 'www_coserhub_net';
// 採集站的網站地址
$site_caiji = "https://www.cosjidi01.com";
$mysqli = new mysqli($host, $user, $password, $database);
if ($mysqli->connect_errno) {
die('連接失敗: ' . $mysqli->connect_error);
}
// 執行查詢操作
global $wpdb;
$table_name = $wpdb->prefix . 'posts'; // 獲取表名
$cache_file = "子頁面鏈接.json";
if(file_exists($cache_file)){
if (time() - filectime($cache_file) > 180) {
unlink($cache_file);
echo("會話過期,已刪除之前緩存文件!");
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo '<meta http-equiv="refresh" content="2; url='.$url.'">';
die();
}
}
// 默認查詢全部數據
$sql = "SELECT id, post_title as title, post_content as content, guid as link
FROM {$wpdb->prefix}posts
WHERE `post_type` = 'post' ";
// 判斷是否傳入參數控制偏移量
if (isset($_GET['next'])) {
$offset = intval($_GET['next']);
$sql .= " AND post_content NOT LIKE '%【--/pic/%' LIMIT 100 OFFSET $offset";
}
$result = $mysqli->query($sql);
if(file_exists($cache_file)){
// 循環判斷並處理數據
$href_array = json_decode(file_get_contents($cache_file),true);
$next_id = $offset + 100;
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?next=$next_id";
// 循環判斷並處理數據2
if ($result !== false) {
echo "<p>點擊<a href='{$url}'>下一步</a>開始處理下一個一百條</p>{$html}";
foreach ($result as $row) {
echo "處理文章【<a href='{$row['link']}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
$content = $row['content'];
foreach ($href_array as $k=>$v){
$original_content = $content;
$content = str_replace("href=\"{$v}\"","href=\"{$k}\"",$content);
if ($content !== $original_content) {
echo "----查詢到一個子頁面鏈接,已將子頁面鏈接修正至本站,鏈接【<a href='{$k}' style='color:green;' target='_blank'><b>{$k}</b></a>】<br>";
}
}
foreach ($href_array as $k=>$v){
$original_content = $content;
$v = $site_caiji.$v;
$content = str_replace("href=\"{$v}\"","href=\"{$k}\"",$content);
if ($content !== $original_content) {
echo "----查詢到一個子頁面鏈接,已將子頁面鏈接修正至本站,鏈接【<a href='{$k}' style='color:green;' target='_blank'><b>{$k}</b></a>】<br>";
}
}
// 更新文章內容
$sql = "UPDATE {$wpdb->prefix}posts SET post_content = '{$content}' WHERE ID = {$row['id']}";
$mysqli->query($sql);
if ($mysqli->errno) {
die('更新失敗: ' . $mysqli->error);
}else{
echo "成功更新文章【<a href='{$row['link']}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
// 更新文章發佈時間和修改時間
$wpdb->update(
"{$wpdb->prefix}posts",
array(
// 'post_modified' => current_time('mysql'),
'post_modified_gmt' => current_time('mysql', 1)
),
array('ID' => $row['id'])
);
}
}
}else{
if ($result !== false) {
foreach ($result as $row) {
$content = $row['content'];
/* 使用正則表達式匹配所有的a標籤,正則:/<a\s+[^>]*?href=[\'"]([^\'"]*?)[\'"][^>]*?>/i */
// 使用正則表達式匹配所有子頁面的具體鏈接
$matches = [];
preg_match_all('/【--(.*?)--】/i', $content, $matches);
if(!empty($matches[1])){
$herf = "/{$row['id']}/";
$href_array[$herf] = $matches[1][0];
$html .= "成功匹配子頁面信息,本站子頁面鏈接【<a href='{$herf}' style='color:green;' target='_blank'><b>{$herf}</b></a>】,採集站頁面鏈接【{$matches[1][0]}】,標題爲【<a href='{$herf}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
}
$num = count($href_array);
file_put_contents($cache_file,json_encode($href_array));
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?next=1";
echo "<p>已匹配到{$num}個子頁面,點擊<a href='{$url}'>下一步</a>開始處理前一百條</p>{$html}";
}
}
// 關閉數據庫連接
$mysqli->close();第二次,優化後的:
<?php
// 引入WordPress的核心文件
require_once(dirname(__FILE__) . '/wp-load.php');
// 連接數據庫
$host = 'localhost';
$user = '';
$password = '';
$database = '';
// 採集站的網站地址
$site_caiji = "";
$mysqli = new mysqli($host, $user, $password, $database);
if ($mysqli->connect_errno) {
die('連接失敗: ' . $mysqli->connect_error);
}
// 執行查詢操作
global $wpdb;
$table_name = $wpdb->prefix . 'posts'; // 獲取表名
$cache_file = "子頁面鏈接.json";
if(file_exists($cache_file)){
if (time() - filectime($cache_file) > 180) {
unlink($cache_file);
echo("會話過期,已刪除之前緩存文件!");
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo '<meta http-equiv="refresh" content="2; url='.$url.'">';
die();
}
}
// 默認查詢全部數據
$sql = "SELECT id, post_title as title, post_content as content, guid as link
FROM {$wpdb->prefix}posts
WHERE `post_type` = 'post' ";
// 判斷是否傳入參數控制偏移量
if (isset($_GET['next'])) {
$offset = intval($_GET['next']);
$sql .= " AND post_content NOT LIKE '%【--/pic/%' LIMIT 100 OFFSET $offset";
}
$result = $mysqli->query($sql);
if(file_exists($cache_file)){
// 循環判斷並處理數據
$href_array = json_decode(file_get_contents($cache_file), true);
$next_id = $offset + 100;
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?next=$next_id";
// 循環判斷並處理數據2
if ($result !== false) {
$html = '';
foreach ($result as $row) {
$html .= processArticle($row, $href_array, $site_caiji);
}
echo "<p>點擊<a href='{$url}'>下一步</a>開始處理下一個一百條</p>{$html}";
}
}else{
if ($result !== false) {
$html = '';
$href_array = [];
foreach ($result as $row) {
$html .= processContent($row, $href_array);
}
$num = count($href_array);
file_put_contents($cache_file, json_encode($href_array));
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?next=1";
echo "<p>已匹配到{$num}個子頁面,點擊<a href='{$url}'>下一步</a>開始處理前一百條</p>{$html}";
}
}
// 關閉數據庫連接
$mysqli->close();
function processArticle($row, &$href_array, $site_caiji) {
$html = '';
$content = $row['content'];
foreach ($href_array as $k => $v) {
$original_content = $content;
$content = str_replace("href=\"{$v}\"","href=\"{$k}\"",$content);
if ($content !== $original_content) {
$html .= "----查詢到一個子頁面鏈接,已將子頁面鏈接修正至本站,鏈接【<a href='{$k}' style='color:green;' target='_blank'><b>{$k}</b></a>】<br>";
}
}
foreach ($href_array as $k => $v) {
$original_content = $content;
$v = $site_caiji.$v;
$content = str_replace("href=\"{$v}\"","href=\"{$k}\"",$content);
if ($content !== $original_content) {
$html .= "----查詢到一個子頁面鏈接,已將子頁面鏈接修正至本站,鏈接【<a href='{$k}' style='color:green;' target='_blank'><b>{$k}</b></a>】<br>";
}
}
// 更新文章內容
$sql = "UPDATE {$wpdb->prefix}posts SET post_content = '{$content}' WHERE ID = {$row['id']}";
$mysqli->query($sql);
if ($mysqli->errno) {
die('更新失敗: ' . $mysqli->error);
}else{
$html .= "成功更新文章【<a href='{$row['link']}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
// 更新文章發佈時間和修改時間
$wpdb->update(
"{$wpdb->prefix}posts",
array(
// 'post_modified' => current_time('mysql'),
'post_modified_gmt' => current_time('mysql', 1)
),
array('ID' => $row['id'])
);
return "處理文章【<a href='{$row['link']}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>" . $html;
}
function processContent($row, &$href_array) {
$content = $row['content'];
/* 使用正則表達式匹配所有的a標籤,正則:/<a\s+[^>]*?href=[\'"]([^\'"]*?)[\'"][^>]*?>/i */
// 使用正則表達式匹配所有子頁面的具體鏈接
$matches = [];
preg_match_all('/【--(.*?)--】/i', $content, $matches);
if (!empty($matches[1])) {
$herf = "/{$row['id']}/";
$href_array[$herf] = $matches[1][0];
return "成功匹配子頁面信息,本站子頁面鏈接【<a href='{$herf}' style='color:green;' target='_blank'><b>{$herf}</b></a>】,採集站頁面鏈接【{$matches[1][0]}】,標題爲【<a href='{$herf}' style='color:green;' target='_blank'><b>{$row['title']}</b></a>】<br>";
}
return '';
}