Легко объяснить, чего я хочу достичь, но для меня (новичка в 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;
}