2011-02-13 3 views
1

달성하고자하는 것을 설명하기는 쉽지만 PHP (PHP 초보자)에게는 실제로 달성하기가 어렵습니다. 기본적으로 내가 원하는 것은 BBCode를 가능한 한 쉽고 짧게 만드는 것입니다. 그런 다음 특정 요소에 대한 BBCode 필터링

$filter=array('b','i'); 

, 내가 얻을 수없는 부분이 될 것이라고는 그 배열의 문자열을 검사 대신

$filter=array(
    '[b]'=>'<b>', 
    '[/b]'=>'</b>', 
    '[i]'=>'<i>', 
    '[/i]'=>'</i>'); 

같은 배열의 난이 배열을 가지고 싶습니다 그들 주위에 대괄호 (그리고 내가 알아낼 수없는 또 다른 것, 괄호 안에 /을 또한 검사 할 수 있도록)를 가지고 그 대괄호를 <>으로 바꾼다. 따라서 [b]<b>이되고 [/b]</b>이됩니다.

편집 : 솔루션

function bbcode($string) { 
    $filter=array('b','i','u'); 
    foreach ($filter as $filter) { 
     $string=str_replace('['.$filter.']','<'.$filter.'>',$string); 
     $string=str_replace('[/'.$filter.']','</'.$filter.'>',$string); 
     } 
    return $string; 
    } 

답변

0
$filter = array('b','i'); 

$newfilter = array(); 
foreach ($filter as $tag) { 
    $newfilter["[$tag]"] = "<$tag>"; 
    $newfilter["[/$tag]"] = "</$tag>"; 
} 

이제 $newfilter를 사용할 수 있습니다.

+0

필자는 불필요한 배열을 만드는 것을 선호하지 않지만 그 코드는 나를 위해 적합한 것을 만드는 데 도움이되었습니다. 감사. 코드를 원할 수도있는 사람들을 위해 첫 번째 게시물에 코드를 넣을 것입니다. – Anonymous

+1

건배와 받아 들여 주셔서 감사합니다. 이 코드는 항상 여기에 있으므로 실제로 코드를 복사 할 필요는 없습니다. ;) – awm

관련 문제