0

我正在开发一个 WordPress 数据库,我需要一些帮助来清理 post_content 字段。

大约有 5,000 个帖子包含以下内容:
RANDOM JUNK<img src="http://domain.tld/randomString.jpg" />MORE RANDOM JUNK

或者

RANDOM JUNK<img src="http://domain.tld/randomString.png" />MORE RANDOM JUNK

或者

RANDOM JUNK<img src="https://domain.tld/randomString.jpg" />MORE RANDOM JUNK

或者

RANDOM JUNK<img src="https://domain.tld/randomString.png" />MORE RANDOM JUNK

我需要删除除图像之外的所有内容,并且某些字段中可能还有其他 HTML 标记。

SQL初学者应该从哪里开始?

4

2 回答 2

0

用 sql 是不可能的。sql 只能找到一个正则表达式并在那里告诉它,但不能捕获它的一部分并再次插入它。

您需要先查询所有图像,然后匹配您的地址,然后再次插入...

$sql = "SELECT postid, image FROM posts";
$result = mysql_query($sql) OR die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
    preg_match('/<img[^>]+>/i', $row['image'], $matches);
    $sql = "UPDATE posts SET image = '".$matches[0]."'
            WHERE postid = ".$row['postid'];
    mysql_query($sq) OR die(mysql_error());
}
于 2012-11-03T00:48:33.130 回答
0

您可以这样做,假设您要保留的“img”标签有些独特。使用 SUBSTRING_INDEX

update posts set post_content = 
concat(
    SUBSTRING_INDEX(post_content,'<img src="http://domain.tld/',1) ,
    SUBSTRING_INDEX(post_content,'.jpg" />',-1) 
) 

仅保留您想要的“img”标签。

于 2014-02-06T17:48:49.063 回答