2013-07-12 2 views
0

내 MySQL 데이터베이스를 사용하여 이미지 버전과 텍스트 스마일을 대체하기 위해 노력하고PHP BB 웃는 교체

나는 다음과 같은 코드가 있습니다

<?php 
    function bbcodeParser($bbcode) { 

     $sql = mysql_query("SELECT * FROM smileys"); 
     while($smiley = mysql_fetch_array($sql)) { 
      $match[$smiley['match']] = $smiley['match']; 
      $replace[$smiley['match']] = "<img style='max-height: 25px; max-width: 25px;' src='" . $smiley['replace'] . "' />"; 
     } 

     /* Parse */ 
     $bbcode = preg_replace($match, $replace, $bbcode); 

     /* Return parsed contents */ 
     return $bbcode; 
    } 
?> 

을하지만 난 (

bbcodeParser를 사용할 때 "이것은 테스트입니다 :)");

아무것도조차 기본적인 텍스트, 표시되지 않습니다

내 데이터베이스입니다 : 당신의 경기 배열의

" match |     Replace      " 
-------------------------------------------------------------- 
" :) | http://mysite.com/images/smileys/icon_e_smile.gif " 
" XD | http://mysite.com/images/smileys/icon_lol.gif " 
etc.... 
+0

어디서나 함수 호출 결과를'echo'합니까? 아니면 그냥 부르 겠어? – andrewsi

+0

'return'을 사용한다면'echo'해야합니다. 또한 함수 내에서 쿼리를 수행하고 텍스트를 검색 한 다음 bbcodeParser()에 전달하는 방법에 대해 배우지 않을 것입니다. 또한, mysql_ 함수는 더 이상 사용되지 않습니다. 대신에 MySQLi 나 PDO 같은 라이브러리를 사용하십시오. –

+0

echo phpcodeParser ($ post [ 'content']);를 사용하고 있습니다. – MRVDOG

답변

3

값은 유효한 레그 패턴이 아니다. 대신 str_replace를 사용하십시오.

$bbcode = str_replace($match, $replace, $bbcode); 

하거나 $ 일치하는 배열을 구축 포기하고

$bbcode = str_replace(array_keys($replace), array_values($replace), $bbcode); 
+0

이것을 잘 해냈다 : D, thankyou – MRVDOG

2

$match는 패턴 문자열 (또는 패턴의 문자열 배열)해야 사용할 수 있습니다. 여기에 해당하는 키와 값을 가진 배열 인 것 같습니다 (왜?!).

자세한 내용은 http://php.net/preg_replace을 참조하십시오.

+0

배열이 작동한다 :) – MRVDOG

+1

정규 표현식을 포함하는 배열이 작동한다. 배열에 정규식이 없습니다. –

+0

@Vinny Benson : 그들은 그렇지만이 방법이 아닙니다. – Arthur