2012-08-11 37 views
1

我有一個MySQL數據庫,其中包含我的網站頁面。表格中的所有條目均爲html格式。我想要做的就是從內容中刪除<img ... >(圖片)。我想刪除的代碼MySQL從表中刪除圖像

例子:

<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命令來做到這一點?

感謝

+1

你最好的選擇可能是編寫使用DOM解析器來查詢數據庫,處理字符串的小型應用程序,並保存到數據庫中。 – David 2012-08-11 01:45:31

回答

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()); 

} 

?> 
1

爭取做大量的文本處理與SQL命令似乎是一個壞主意給我。

但即使不是,試圖在SQL中解析HTML確實是一個可怕的想法。 (你可以使用正則表達式來關閉它,但是除非你使用解析器,否則你將永遠無法捕捉HTML中的元素。)

我會說即使這是可能的,它肯定不是一個好東西方法來做到這一點。調試問題的時間很可怕,性能可能會很差。

要麼在您將HTML放入數據庫之前將應用程序去掉<img>標籤,要麼在將數據從數據庫中提取出來之後將它們去掉。

+0

Trott這些網頁來自WordPress,它們代表我的帖子內容。其中一些有圖像,我需要刪除它們。我有大約25k篇文章,所以手動不是一個選項。 – Andrei 2012-08-11 01:43:18

+0

誰說過要手動做這件事?只需編寫一個程序即可完成。不要試圖在SQL本身內部完成它。 – Trott 2012-08-11 01:46:37

+0

嗯,這是我的問題。我不知道該怎麼做:)即使我使用PHP檢索字段,我也不知道如何去除圖像。 – Andrei 2012-08-11 01:47:48