我正在将几千篇文章从旧的 Wordpress 网站转移到新网站。每篇文章在文本本身中至少包含一个,也可能包含少量出站链接。我们需要手动检查所有 URL。理想情况下,我会有一个 URL 列表,我可以对其进行排序,以使该过程快速进行。
我正在寻找一种方法来提取所引用的每个 URL 的列表以及帖子的 ID,以便我们可以在需要时返回并编辑它。
我的第一次尝试很简单,例如“SELECT ID, post_content FROM wp_posts WHERE post_content LIKE '%http%';”,但这只是产生了(几乎)所有帖子的列表.
我想这有两个部分,第一部分是每个 URL 都获得点击,而不仅仅是每篇文章,因为文章可能包含一个或多个 URL。也许某种加入?我将从这个开始,因为我认为这是我能弄清楚的事情。
第二部分将修剪结果,以便它们只显示 URL 本身。我对 MySQL 很有经验,但根本没有真正使用过任何字符串操作函数。
预先感谢您的帮助。
最佳答案
在这里回答我自己的问题。我不知道如何在 MySQL 中正确完成它,所以我在 PHP 中完成了它。我仍然很想知道是否有一种方法可以在 SQL 中正确完成此操作,因为这可以节省稍后的几个步骤。
下面是完成这项工作的 PHP,它将逗号分隔的文本转储到屏幕上,我可以将其保存并导入到 Excel 中以便轻松排序和查看:
global $wpdb;
$sql = "SELECT ID, post_content FROM wp_posts WHERE (post_content LIKE '%href=%');";
$results = $wpdb->get_results($sql, ARRAY_A);
foreach($results as $r) {
$arr = explode('href="', $r[post_content]);
foreach($arr as $key => $a) {
if ($key > 0) {
$x = explode('"', $a);
echo $r[ID].','.$x[0].'<br/>';
}
}
}
关于php - 使用 MySQL 从 WordPress post_content 中提取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533431/