Я предоставляю небольшую php + mysql CMS для сайта, который будет обновляться владельцем.
Как видно из WordPress, я хотел бы дать пользователю возможность делать более сложные обновления, используя такой синтаксис:
[row h="100"]
[col link="/some/link/1"][/col]
[col link="/some/link/2"][/col]
[col link="/some/link/3"][/col]
[/row]
[el id="some-id"][/el]
Очевидно, что моя CMS должна читать и переводить этот скрипт в обычный полный HTML.
Конечно, я могу сделать это с помощью функции replace (), написанной в правильном порядке, но я думаю, что существует лучший и более надежный способ.
Что ты предлагаешь? Как называется этот вид синтаксиса?
Приспособьте это к своим потребностям
function bbc2html($content) {
$search = array (
'/(\[b\])(.*?)(\[\/b\])/',
'/(\[i\])(.*?)(\[\/i\])/',
'/(\[u\])(.*?)(\[\/u\])/',
'/(\[ul\])(.*?)(\[\/ul\])/',
'/(\[li\])(.*?)(\[\/li\])/',
'/(\[url=)(.*?)(\])(.*?)(\[\/url\])/',
'/(\[row h=\")(.*?)(\\"])(.*?)(\[\/row\])/',
'/(\[col link=\")(.*?)(\\"])(.*?)(\[\/col\])/'
);
$replace = array (
'<strong>$2</strong>',
'<em>$2</em>',
'<u>$2</u>',
'<ul>$2</ul>',
'<li>$2</li>',
'<a href="$2" target="_blank">$4</a>',
'<div class="row" style="height: $2px;">$4</div>',
'<a class="column" href="$2">$4</a>'
);
return preg_replace($search, $replace, $content);
}
echo bbc2html('[row h="100"][col link="/some/link/1"]test 1[/col][col link="/some/link/2"]test 2[/col][col link="/some/link/3"]test 3[/col][/row][el id="some-id"][/el]');
Предоставить строку без пробелов для bbc2html ()
Других решений пока нет …