我正在为一个将由所有者更新的网站提供一个小型的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()来完成它,但我想存在更好更稳定的方法。
你有什么建议?这种语法是如何命名的?
答案 0 :(得分:0)
根据您的需要调整
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()
提供一个没有空格的字符串