Php 附上ul al li组(可能有多个)
我试图用给定的字符串生成一个列表块。我想将所有以*开头的行转换为列表。例如:Php 附上ul al li组(可能有多个),php,regex,Php,Regex,我试图用给定的字符串生成一个列表块。我想将所有以*开头的行转换为列表。例如: Text... * One * Two Other text. 我用一个php正则表达式完成了它 $source=preg_replace("/^\*([^\n]*)/m","<li>$1</li>",$source); $source=preg\u replace(“/^\*([^\n]*)/m”,“$1”,$source); 如何将所有创建的li组括在“ul”标记之间?。它可能是有三个
Text...
* One
* Two
Other text.
我用一个php正则表达式完成了它
$source=preg_replace("/^\*([^\n]*)/m","<li>$1</li>",$source);
$source=preg\u replace(“/^\*([^\n]*)/m”,“$1 ”,$source);
如何将所有创建的li组括在“ul”标记之间?。它可能是有三个“li”线的块,有十个“li”线,等等。。。我试着搜索所有的家长,比如:
“不”+
$source=preg\u replace(“/\*([^\r\n]+)/”,“$1 ”,$source)代码>
将改变:
* Test1
* Test2
* Test3
* Test4
进入:
测试1
测试2
测试3
测试4
编辑:
$source=preg\u replace(“(.+) ”,“- $1
”,preg\u replace(“/\*([^\r\n]+)/”,“$1 ”,$source))代码>
。。。将把附在
中,我不确定我是否正确理解了您的问题,但是:
$source=preg\u replace(“/\*([^\r\n]+)/”,“$1 ”,$source)代码>
将改变:
* Test1
* Test2
* Test3
* Test4
进入:
测试1
测试2
测试3
测试4
编辑:
$source=preg\u replace(“(.+) ”,“- $1
”,preg\u replace(“/\*([^\r\n]+)/”,“$1 ”,$source))代码>
。。。将封装在
中,您必须匹配的连续对。 元素,并将其封装在
中:
preg_replace('#((?:<li>.*?</li>\s*)+)#', '<ul>\1</ul>', $source);
如果您有任何问题,请告诉我。您必须匹配连续的元素对。 元素,并将它们包装在
中:
preg_replace('#((?:<li>.*?</li>\s*)+)#', '<ul>\1</ul>', $source);
如果您有任何问题,请告诉我。您是否也将其他文本语法转换为HTML?您是否也将其他文本语法转换为HTML?我认为在这种情况下,它应该有一个多行修饰符,它与我的非常类似。我需要的是,一旦应用了这个正则表达式,将所有“li”组封装到open和close ul标记中。无论如何谢谢你=)我认为在这种情况下,它应该有一个多行修饰符,它与我的非常相似。我需要的是,一旦应用了这个正则表达式,将所有“li”组封装到open和close ul标记中。无论如何谢谢你=)哦,非常感谢这是一个非常有趣的解决方案(只需要避开li结束斜杠)。我想知道。。。为什么小组需要以“?:”开头?@Kenedy更新了我的答案,解释了?:
的作用。。简而言之,它与任何内容都不匹配:)并且您不需要转义结束斜杠,因为我正在使用#
作为表达式enclosure.Ups。。。对不起,我更正错了。问题是,我将其替换为斜杠表达式附件(以便对所有人使用相同的表达式),但不知道两者之间的区别。再次感谢您的解释,它现在工作得很好:)哦,非常感谢您这是一个非常有趣的解决方案(只需要避开li结束斜杠)。我想知道。。。为什么小组需要以“?:”开头?@Kenedy更新了我的答案,解释了?:
的作用。。简而言之,它与任何内容都不匹配:)并且您不需要转义结束斜杠,因为我正在使用#
作为表达式enclosure.Ups。。。对不起,我更正错了。问题是,我将其替换为斜杠表达式附件(以便对所有人使用相同的表达式),但不知道两者之间的区别。再次感谢您的解释,它现在工作得很好:)