Фильтрация BBCodes для определенных элементов - PullRequest
1 голос
/ 13 февраля 2011

Легко объяснить, чего я хочу достичь, но для меня (новичка в PHP) трудно добиться этого. По сути, я хочу сделать BBCodes максимально простыми и короткими. Вместо массива типа

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

Я хотел бы иметь этот массив:

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

Тогда, часть, к которой я не могу добраться, будет где он проверяет строки в этом массиве, чтобы заключить их в квадратные скобки (и, еще одна вещь, которую я не могу понять, чтобы иметь возможность проверить также для 1007 * в скобках), а затем замените эти скобки на <>. Таким образом, [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;
    }

1 Ответ

0 голосов
/ 13 февраля 2011
$filter = array('b','i');

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

Теперь вы можете использовать $newfilter.

...