2012-08-11 3 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 명령이 있나요? 는 SQL 명령과 함께 상당한 텍스트 처리를 수행하는 시도

덕분에

+1

가장 좋은 방법은 데이터베이스, 프로세스 문자열을 조회하기 위해 DOM 파서를 사용하는 작은 응용 프로그램을 작성하고 데이터베이스에 다시 저장할 수 있습니다. – David

답변

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에서 HTML을 구문 분석하는 것은 분명히 끔찍한 생각입니다. (당신은 정규 표현식으로 가깝게 할 수는 있지만 파서를 사용하지 않는 한 HTML로 요소를 찾는 모든 경우를 결코 포착하지 않을 것이다.)

나는 이것이 가능할지라도 분명히 좋지 않다 그것을하는 방법. 당신은 끔찍한 시간에 디버깅 문제를 일으킬 것이고 성능은 부팅에 좋지 않을 것입니다.

데이터베이스에 HTML을 넣기 전에 응용 프로그램에서 <img> 태그를 제거하거나 데이터베이스에서 검색 한 후에 응용 프로그램을 제거하도록하십시오.

+0

Trott 페이지는 Wordpress에서 제공되며 내 게시물 콘텐츠를 나타냅니다. 그들 중 일부는 이미지가 있고 그것을 제거해야합니다. 나는 약 25k 기사를 가지고 있으므로 수동으로하는 것은 옵션이 아닙니다. – Andrei

+0

수동으로 수행하는 것에 관해 누가 말 했나요? 그것을하기위한 프로그램을 작성하십시오. SQL 자체 안에서 그렇게하려고하지 마십시오. – Trott

+0

글쎄, 내 문제입니다. 어떻게 해야할지 모르겠습니다 :) PHP를 사용하여 필드를 검색하더라도 이미지 만 제거하는 방법을 모르겠습니다. – Andrei

관련 문제