Php preg_替换为[list][*][/list]
有人能帮我解决这个问题吗 我正在为我的网站使用BBcode,但在文本编辑器中我发现一个问题: UlPhp preg_替换为[list][*][/list],php,preg-replace,Php,Preg Replace,有人能帮我解决这个问题吗 我正在为我的网站使用BBcode,但在文本编辑器中我发现一个问题: Ul [list] [*]Lorem Ipsum [/list] [list=1] [*]Lorem Ispum [/list] Ol [list] [*]Lorem Ipsum [/list] [list=1] [*]Lorem Ispum [/list] 我正在使用以下脚本: $filter = preg_replace("#[[]list[]](.*)[[]/list[]]#","<
[list]
[*]Lorem Ipsum
[/list]
[list=1]
[*]Lorem Ispum
[/list]
Ol
[list]
[*]Lorem Ipsum
[/list]
[list=1]
[*]Lorem Ispum
[/list]
我正在使用以下脚本:
$filter = preg_replace("#[[]list[]](.*)[[]/list[]]#","<ul>$1</ul>",$filter);
$filter = preg_replace("#[[]list=([^0-9][]](.*)[[]/list[]]#","<ol start=$1>$2</ul>",$filter);
$filter = preg_replace("#[*](.*)#","<li>$1</li>",$filter);
我猜你不再需要它了,但要给出一个答案:
- 括号是正则表达式中的特殊字符。当你真正指的是一个括号时,你必须用反斜杠来避开它。星星(星号)也是如此
- 您可以通过
修饰符分析多行s
- 您将需要
(ungreedy)修饰符,否则代码中的多个块将无法工作。ungreedy意味着比赛的开始和结束将在最近的环境中寻找,贪婪意味着算法将搜索最长的距离U
$filter = preg_replace("#\[list\](.*)\[/list\]#sU","<ul>$1</ul>",$filter);
$filter = preg_replace("#\[list=([0-9+])\](.*)\[/list\]#sU","<ol start=\"$1\">$2</ul>",$filter);
$filter = preg_replace("#\[\*\](.*)#","<li>$1</li>",$filter);
$filter=preg\u replace(“\[list\](.*)\[/list\]\sU”,“$1
”,$filter);
$filter=preg\u replace(“\[list=([0-9+])\](.*)\[/list\]\sU”,“$2”,$filter);
$filter=preg\u replace(“\\[\*\](.*)”,“$1 ”,$filter);
请仔细阅读。还可以使用#s
修饰符使*
匹配换行符。但是也要考虑搜索一个现成的BBCOD/ALVE转换器,因为你的编码尝试有更多的缺陷。你可能还想看看BBCODE模块: