从选择MySQL中的长文本中提取多个img src

时间:2019-03-13 08:52:07

标签: mysql wordpress

我有一个名为posts的表。

它包含id和post_content:

ID  post_title post_content
1   aaaa       <p>AAaa</p><img src="https://domain/uploads/aa.jpg"><p>Addd<img src="https://domain/uploads/assssa.jpg"></p>
2   bbb        <img src="https://domain/uploads/bbbb.jpg"><p>xxxxx<img src="https://domain/uploads/xxxxx.jpg"></p>
3   ccc        <p>aaaaa</p><img src="https://domain/uploads/aa.jpg">

我想从具有特定域的每个post_content中提取图像src。每个post_content都有多张图片。

就像我只想使用url这样获得图像:

<img src="https://aaaaa.co.jp/uploads/">

注意:<img src="">的内部可以包含宽度,高度,类或ID。

赞:

<img src="" class="" id="">

OR

<img width="" height="" src="" class="" id="">

我已经从这里尝试过这个: Extract the URL from img src with a mysql query

其中一些返回图片网址,但其中一些不会返回。

这是我到目前为止的查询:

SELECT 
    post.ID,
    post.post_title,
    SUBSTR(SUBSTR(post.post_content,
            LOCATE('src="', post.post_content) + 5),
        1,
        LOCATE('"',
                SUBSTR(post.post_content,
                    LOCATE('src="', post.post_content) + 5)) - 1) AS 'src'
FROM
    tokyo_posts post;

这是我想要的输出:

ID  post_title post_content
1   aaaa       https://domain/uploads/aa.jpg
1   aaaa       https://domain/uploads/assssa.jpg
2   bbb        https://domain/uploads/bbbb.jpg
2   bbb        https://domain/uploads/xxxxx.jpg
3   ccc        https://domain/uploads/aa.jpg

注意:我正在使用wordpress数据库。我将使用此查询来导入图像。

MySQL版本:5.6.42

1 个答案:

答案 0 :(得分:0)

如果您不更改数据的结构,那么此数据非常适合您。

SELECT post.ID,
post.post_title,
SUBSTRING(post_content, INSTR(post_content, 'src="') + 5
, INSTR(post_content, '">') - (INSTR(post_content, 'src="') + 5))
FROM
tokyo_posts post;