1

解释我想要实现的目标很容易,但对我(PHP 新手)来说,很难真正实现它。基本上我想要的是使 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;
    }
4

1 回答 1

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

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

现在您可以使用$newfilter.

于 2011-02-13T04:53:29.317 回答