2011-12-10 4 views
0

포럼은 phpbb3을 기반으로하며 때로는 구문 강조 모드를 사용하고 있습니다. 모드를 삭제하고 기본 bbcode 태그로 돌아 가기로 결정했습니다.검색 + mySQL 데이터 바꾸기

Text Text Text Text Text 
[swordfish filename=code.bas] 
code code code 
123 
code code[/swordfish] 
Text Text Text Text Text 

그것은 [swordfish filename=code.bas][swordfish filename=code.bas abc 123] 같은 다른 필드를 포함 할 수 있음을 강조 가치가

Text Text Text Text Text 
[code] 
code code code 
123 
code code[/code] 
Text Text Text Text Text 

하려면 : - 긴 이야기 짧은 I는 포함 된 MySQL의 필드 (phpbb_forum_posts, POST_TEXT)를 업데이트해야합니다. 첫 번째 태그의 내용과 관계없이 [code]

으로 변경해야합니다.이 내용은 내 "알 필요"범위에서 벗어나서 누군가가 mySQL 또는 PHP 스크립트를 디자인하도록 도울 수 있다면 정말 감사하겠습니다. 대량 업데이트를 달성하십시오. 여기

+0

이 모든 것이 하나의 열에 한 테이블에 있습니까? 아니면 여러 테이블과 여러 열에 코드가 있습니까? –

답변

0

는 당신이 가고 (I 교체/고급 검색, 충분하지 기초 주위에 나의 방법을 알고) :

$regexp = '/\[(\/)?swordfish[^\]]*\]/'; 

$push = 'REPLACE whatever_table (id, post_text) 
      VALUES'; 

$pull = 'SELECT id, post_text 
      FROM whatever_table 
      WHERE whatever = condition'; 

if ($result = $mysqli->query($pull)) { 
    while ($row = $result->fetch_assoc()) { 
     $row['post_text'] = preg_replace($regexp, '[$1code]', $row['post_text']); 

     $push .= sprintf(
      ' ("%s", "%s"),', 
      $mysqli->real_escape_string($row['id']), 
      $mysqli->real_escape_string($row['post_text']) 
     ); 
    } 

    $result->free(); 
} 

$mysqli->query(rtrim($push, ',')); 

편집
REPLACE 문이 완료되지 있습니다! 모든 열을 가져 와서 다시 써야합니다 (내가 언급 한 두 가지가 아니라).