php - 使用 MySQL 从 WordPress post_content 中提取 URL

标签 php mysql sql wordpress

我正在将几千篇文章从旧的 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/

相关文章:

php - 获取最后一个购物车项目 ID woocommerce

php - 如何在一组 PHP MySQL 选择查询后插入水平线?

C# 在另一个阅读器解决方案中使用阅读器?

mysql IFNULL INSERT 巨大挫折?

php - 如何在 MySQL 数据库中插入具有多个值的输入?

php - 在 MySQL 中通过单个查询获取今天、本周、本月和今年的数据?

php - 在sql中查找最大平均值

SQL:尝试访问找不到的表时,Try/Catch 不会捕获错误

sql - 日期范围在带有 ms Access 数据库的 vb 中不起作用

sql - 我可以在 SQL Azure 中编写数据分类脚本吗