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

保持したい「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 に答える
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 に答える