记录一下自己的代码,主要功能为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 '';
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容