【发布时间】:2012-10-30 15:49:52
【问题描述】:
我有一个文本字段,用户可以在其中编写特定命令来获取一些 html。
例如:
Text Text Text Text
[*] first entry
[*] second entry
[*] 3rd...
Text Text
这个文本应该用正则表达式转换成这样的:
text text
<ol>
<li>FirstEntry</li>
<li>Second</li>
..
</ol>
text text
有什么建议吗?
与条目匹配的正则表达式是这样的:
/\[\*\].+/i
问题是如何正确插入<ol>和</ol>
我的解决方案
我在想我可以解析所有文本行,当解析器遇到以 [*] 开头的第一行时,然后输入 <ol> </ol> 同样的事情
到目前为止,我已经制作了将单个 [*] ... 转换为 <li> ... 的脚本
preg_replace('/\[\*\](.+)/i','<li>$1</li>',$str);
我需要<ol> 部分
我的实现
【问题讨论】:
-
你想看看phps正则表达式函数
preg_replace_callback()。 -
感谢您的输入.. 但我知道该功能,但我不知道如何使用它
-
为什么,您使用正则表达式来匹配模式
[*] first entry等等,并且对于每个这样的匹配,您实现的回调函数都会被调用。在该函数中,您可以输出任何您想要的标记,例如<li>FirstEntry</li>。 -
这不是问题:)。问题更像是如何正确插入
- 和
-
好吧,也许通过使用另一个正则表达式模式来做同样的事情?虽然这更容易,但您不需要回调,但可以使用普通的
preg_replace()函数。