2011-02-13 57 views
1

很容易解釋我想實現的目標,但對於我來說(PHP的新手)很難實現它。基本上我想要的是儘可能簡化和縮短BBCodes。相反,像過濾某些元素的BBCodes

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

數組的我想有這樣的數組:

$filter=array('b','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 2011-02-13 05:03:08