PHP识别Rich Text中的段落

时间:2017-02-03 10:16:05

标签: php html regex

我有一个用于新闻消息的富文本编辑器。 前端显示一个段落,一旦用户点击“阅读更多”,用户就可以阅读完整的消息。

然而,此识别现在由<div></div>标签完成,而编辑器使用
标签(两个用于段落)。

我现在的正则表达式是:

"/<div>([^`]*?)<\/div>/is"

如何将其扩展为同时识别两个标签。 (注意,那些br标签可能包含属性)。

1 个答案:

答案 0 :(得分:2)

如上所述,请注意使用正则表达式来解析HTML,特别是对于&#34;复杂的&#34;问题,一般是个坏主意。以下是不是一个完美的解决方案,但可能足以满足您上面给出的简单要求:

/(?<=<div>).*?(?=<\/div>)|(?<=<br>\s*<br>).*?(?=<div>|<br>\s*<br>)/is

(?<=...)(?=...)look behinds/aheads,即他们声明模式的那些部分存在,但未包含在匹配结果中。

我还使用\s*来帮助捕获用户输入类似内容的场景:

<br>  <br>

或者:

<br>
<br>

......但正如我所说,这仍然不是一个完美的解决方案。如果您发现模式过于复杂,那么请认真考虑using an XML parser。 (或者,只是让用户输入新行,然后将这些行转换为段落?...甚至,只使用现有的WYSIHTML5 librarymarkdown library?)