Making a [code][/code] for BBcode with php regex(用php regex为BBcode制作[code][/code)
本文介绍了用php regex为BBcode制作[code][/code的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想为bbcode创建一个[code][/code]标记,这样我创建的php正则表达式就不会将里面的内容考虑在内。
示例:
Hello [b]newbie[/b], to write in bold, use the following : [code][b](YOURTEXT)[/b][/code]
应以HTML格式返回:
Hello <strong>newbie</strong>, to write in bold, use the following : [b](YOURTEXT)[/b]
以下是我的bbcode函数的一部分视图:
<?
function bbcode($var) {
$var = preg_replace('`[b](.+)[/b]`isU', '<strong>$1</strong>', $var);
$var = preg_replace('`[i](.+)[/i]`isU', '<em>$1</em>', $var);
$var = preg_replace('`[u](.+)[/u]`isU', '<u>$1</u>', $var);
return $var;
}
?>
提前感谢您的帮助!
编辑: 以下是我最终是如何让它工作的:
<?
function bbcode($var) {
$var2 = preg_split('`([code].*?[/code])`isU', $var, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
$var = preg_replace('`[b](.+)[/b]`isU', '<strong>$1</strong>', $var);
$var = preg_replace('`[i](.+)[/i]`isU', '<em>$1</em>', $var);
$var = preg_replace('`[u](.+)[/u]`isU', '<u>$1</u>', $var);
$var = preg_replace('`([code].*?[/code])`isU', $var2[1], $var);
$var = preg_replace('`[code](.+)[/code]`isU', '<div>$1</div>', $var);
return $var;
}
$text = 'Hello [b]newbie[/b], to write in bold, use the following [u]lol[/u] : [code][b](YOURTEXT) [u]lol[/u][/b][/code] [b][u]LOL[/u][/b]';
echo bbcode($text);
?>
但是,还有一个新问题:如果字符链直接以‘[code]’开头,例如
[code][b]hello[/b][/code] test
结果将为:
test test
这是因为$var2[1]现在指向[/code]之后的内容。
有人能帮我做一个更好的定界吗?这个定界也适用于第二个字符链?提前感谢您!
推荐答案
最后,我用它解决了所有问题:
<?
function bbcode($var) {
$var2 = getStringBetween($var, '[code]', '[/code]');
$var = preg_replace('`[b](.+)[/b]`isU', '<strong>$1</strong>', $var);
$var = preg_replace('`[i](.+)[/i]`isU', '<em>$1</em>', $var);
$var = preg_replace('`[u](.+)[/u]`isU', '<u>$1</u>', $var);
$var = preg_replace('`([code].+[/code])`isU', '<div>'.$var2.'</div>', $var);
return $var;
}
function getStringBetween($str,$from,$to)
{
$sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
return substr($sub,0,strpos($sub,$to));
}
$text = 'Hello [b]newbie[/b], to write in bold, use the following [u]lol[/u] : [code][b](YOURTEXT) [u]lol[/u][/b][/code] [b][u]LOL[/u][/b]';
echo bbcode($text);
?>
这篇关于用php regex为BBcode制作[code][/code的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:用php regex为BBcode制作[code][/code
基础教程推荐
猜你喜欢
- 如何在 Laravel 中使用 React Router? 2022-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 如何替换eregi() 2022-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
