0

我在将文本转换为列表时遇到了一些问题。情况是我从数据库中得到如下文本:

"Hello, my name is michael, my hobbys are:
- computers
- guitar
and some more blabla "

不,我想将列出的点(在这种情况下为计算机和吉他)转换为无序的 html 列表,因此结果应如下所示:

"Hello, my name is michael, my hobbys are:
<ul>
<li>computers<li>
<li>guitar</li>
</ul>
and some more blabla ".

我认为最好的解决方案是通过正则表达式来做到这一点,但我的知识还不足以实现这一点。我通过替换所有/\n- /宽度的<li>标签来尝试它,它有效。但是我如何获得关闭</li>,更让我困惑的是,我如何获得这两个<ul>标签?

提前感谢您的任何建议。

4

3 回答 3

5

您的语法看起来几乎与Markdown相同,这是一种简单的标记语言。唯一的区别是一点空白:

Hello, my name is Michael, my hobbies are:

 - Computers
 - Guitar

and some more blabla

它被转换成这样:

<p>Hello, my name is Michael, my hobbies are:</p>

<ul>
    <li>Computers</li>
    <li>Guitar</li>
</ul>

<p>and some more blabla</p>

有一些PHP Markdown项目我认为你会发现它们很有用。

于 2013-01-08T14:16:27.910 回答
0

有很多方法可以做到这一点,包括正则表达式,但在您的特定情况下,explode() 函数就足够了。你可以做:

$array = explode("\n", $string);

现在您的 $array 将在第一个插槽中显示“你好,我的名字是 michael,我的爱好是:”,在第二个插槽中显示“-computers”,等等。

然后遍历数组,对于每个以“-”开头的元素,把它变成<li>element</li>

这是一种非常普通的方式,但它应该是高效的,并且不需要使用正则表达式。

于 2013-01-08T14:17:56.287 回答
-1

不幸的是,最好做正则表达式

于 2013-01-08T14:15:51.420 回答