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 回答