1

私のウェブサイトのページを含む MySQL データベースがあります。表のエントリはすべて html 形式です。私がしたいのは<img ... >、コンテンツから(画像)を削除することだけです。

削除したいコードの例:

<img src="/assets/cache/pic/1052add1887d7066f2ed4546cdd1fff0.pageCache.jpg" alt="" title="" class="left">
<img src="res/images/upload/2011/accident-mortal.jpg" alt="" title="" class="middle">
<img src="res/images/upload/2011/evacuare-strada-orizontului.jpg" alt="" title="" class="middle">

それを行うSQLコマンドはありますか?

4

2 に答える 2

1

SQLコマンドを使用して実質的なテキスト処理を行おうとするのは、私には悪い考えのように思えます。

しかし、そうでない場合でも、SQLでHTMLを解析しようとするのは確かにひどい考えです。(正規表現に近づくことはできますが、パーサーを使用しない限り、HTMLで要素を見つける際のすべてのコーナーケースを見つけることはできません。)

これが可能だとしても、それは確かに良い方法ではないと思います。問題のデバッグにひどい時間がかかり、起動時にパフォーマンスが低下する可能性があります。

HTMLをデータベースに配置する前にアプリケーションで<img>タグを削除するか、データベースから取得した後にタグを削除してください。

于 2012-08-11T01:41:32.043 に答える
1

それを機能させることができました。私はこのPHPコードを使用しました:

<?php

mysql_connect("localhost", "root", "root") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$result = mysql_query("SELECT * FROM wp_posts WHERE post_status='publish'") or die(mysql_error());  
while ($row = mysql_fetch_array($result)) {

    $content = $row['post_content'];
    $content = preg_replace("/<img[^>]+\>/i", "", $content); 
    $content = addslashes($content);
    $id = $row['ID'];
    mysql_query("UPDATE wp_posts SET post_content='".$content."' WHERE ID='".$id."'") or die(mysql_error());  

}

?>
于 2012-08-11T02:04:20.663 に答える