Php 如何使用preg_split按html标记分割文本?

Php 如何使用preg_split按html标记分割文本?,php,html,preg-split,Php,Html,Preg Split,我在用html标记拆分文本时遇到问题。 我正在使用CKEditor编辑文本并将结果保存到数据库。 为了更好地理解我的问题,我将从DB中输入示例文本 string(3351) "<p> Etiam at auctor massa. In eget turpis a leo auctor molestie. Fusce luctus felis ac porttitor tempor. Etiam est magna, convallis a consectetur eget,

我在用html标记拆分文本时遇到问题。 我正在使用CKEditor编辑文本并将结果保存到数据库。 为了更好地理解我的问题,我将从DB中输入示例文本

string(3351) "<p>
    Etiam at auctor massa. In eget turpis a leo auctor molestie. Fusce luctus felis ac porttitor tempor. Etiam est magna, convallis a consectetur eget, fermentum ac risus. Etiam ut dapibus eros. Ut non erat et enim scelerisque fermentum. Praesent cursus sollicitudin pulvinar. Cras faucibus mauris eget velit elementum gravida. Vestibulum vel leo ut justo pretium gravida a non ligula. Aliquam imperdiet metus ut odio varius viverra et at augue.</p>
<div style="page-break-after: always;"><span style="display: none;">&#160;</span></div>
<p>
    Aenean aliquet rutrum fringilla. Pellentesque non ultrices erat, non luctus lectus. Pellentesque eget neque eget augue imperdiet venenatis eu nec odio. Nulla suscipit enim et nunc consequat, sed venenatis est consectetur. In posuere, diam convallis vestibulum congue, augue turpis vulputate lacus, malesuada luctus turpis magna adipiscing erat. Pellentesque id dui aliquam, viverra nunc ac, sagittis sapien. Phasellus nec consectetur nisl, vitae facilisis metus. Donec odio mauris, egestas vitae dolor sed, rutrum sollicitudin massa. Vestibulum fringilla, ante et aliquet pharetra, lorem nisl posuere dui, at pellentesque velit dui in purus. Aenean nec accumsan arcu. Proin dapibus orci ac est vestibulum, interdum pharetra sem vestibulum. Donec ut vehicula elit. Duis feugiat neque vitae purus molestie sodales. Nulla leo nibh, rhoncus a nisi sed, hendrerit laoreet tortor.</p>
"
我想按“页面标记”拆分文本。为此,我使用这个代码

$aMatches = preg_split('#%page_break%#', $sText);
我应该如何使用remove all html“page brake”DIV拆分此文本

提前谢谢,对不起我的英语

--

格式化代码

<div style="page-break-after: always;">
<span style="display: none;">&#160;</span>

 

--

结果

$aMatches = preg_split('/<div style="page-break-after\: always;\">(.*)<\/div>/', $aNews['text_long']);
$aMatches=preg_split(“/(.*)/”,$aNews['text_long');
当我尝试使用此代码时,我收到:

    string(3351) "
<p>
    Fusce imperdiet diam non neque pulvinar ultrices. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut congue sapien diam, ac sollicitudin ipsum ullamcorper sit amet. Quisque consectetur pulvinar congue. Aenean a blandit felis. Morbi hendrerit bibendum nisi, sed ultrices libero elementum ultrices. Nulla ullamcorper massa non neque ultrices imperdiet. In sagittis lacus neque, lobortis adipiscing nunc bibendum id. Etiam sed molestie lacus. Nullam dapibus mauris eget nisi congue semper. Donec elementum eu magna sit amet tincidunt. Vivamus tincidunt placerat egestas. Mauris fringilla nunc eget purus adipiscing, eu laoreet erat pretium. Curabitur aliquam vestibulum auctor. Donec quis consequat nibh.</p>
<p>
    &#160;</p>
<div style="page-break-after: always;">
    <span style="display: none;">&#160;</span></div>
<p>
    Aenean aliquet rutrum fringilla. Pellentesque non ultrices erat, non luctus lectus. Pellentesque eget neque eget augue imperdiet venenatis eu nec odio. Nulla suscipit enim et nunc consequat, sed venenatis est consectetur. In posuere, diam convallis vestibulum congue, augue turpis vulputate lacus, malesuada luctus turpis magna adipiscing erat. Pellentesque id dui aliquam, viverra nunc ac, sagittis sapien. Phasellus nec consectetur nisl, vitae facilisis metus. Donec odio mauris, egestas vitae dolor sed, rutrum sollicitudin massa. Vestibulum fringilla, ante et aliquet pharetra, lorem nisl posuere dui, at pellentesque velit dui in purus. Aenean nec accumsan arcu. Proin dapibus orci ac est vestibulum, interdum pharetra sem vestibulum. Donec ut vehicula elit. Duis feugiat neque vitae purus molestie sodales. Nulla leo nibh, rhoncus a nisi sed, hendrerit laoreet tortor.</p>
"
字符串(3351)”

这是一种对公共财产的威胁。佩伦特式的居住者莫比·特里斯蒂克·塞内特斯和内特斯·马莱苏达是一种著名的土耳其土耳其人。但是,智者的直径,是一种对公共财产的保护。这是一种温和的猫科动物。莫比·亨德雷特·比本杜姆·尼西,是一种对公共财产自由的保护乌拉姆科珀·马萨(ullamcorper massa)的非特殊饮食危害着饮食。在矢状肌缺陷中,lobortis adipsicing nunc bibendum id.Etiam sed molestie lacus.Nullam dapibus mauris eget nis congue semper.Donec element um eu magna sit amet tincidut.Vivamus tincidut placerat egestas.mauris frongilla nuc eget purus adipsicing,eu laoret erat pretium.Curabitur aliquam前庭拍卖人。请与nibh协商

 

  埃涅亚·阿利奎特·鲁特鲁鲁姆·弗林利亚。佩伦斯凯·非特蕾特,非卢克图斯·莱克图斯。佩伦斯凯·内克·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·维内特·维内特·欧内斯·欧佩克·奥迪·维内特·欧佩奥。无主和无主,这是维内特的圣殿。在波苏尔,康沃尔·康瓦利的前庭,奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯特·奥古斯特·奥古斯两人一组,viverra nunc ac,sagittis sapien.一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组我的前庭里有一间药房,里面有一辆精英汽车,里面有一辆私人汽车,一辆私人汽车,一辆私人汽车

"
但是,当我使用它时:

$aMatches = preg_split('/<div style="page-break-after\: always;\">/', $aNews['text_long']);
$aMatches=preg_split('/',$aNews['text_long']);
我收到:

    array(2) {
  [0]=>
  string(1230) "
<p>
    Fusce imperdiet diam non neque pulvinar ultrices. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut congue sapien diam, ac sollicitudin ipsum ullamcorper sit amet. Quisque consectetur pulvinar congue. Aenean a blandit felis. Morbi hendrerit bibendum nisi, sed ultrices libero elementum ultrices. Nulla ullamcorper massa non neque ultrices imperdiet. In sagittis lacus neque, lobortis adipiscing nunc bibendum id. Etiam sed molestie lacus. Nullam dapibus mauris eget nisi congue semper. Donec elementum eu magna sit amet tincidunt. Vivamus tincidunt placerat egestas. Mauris fringilla nunc eget purus adipiscing, eu laoreet erat pretium. Curabitur aliquam vestibulum auctor. Donec quis consequat nibh.</p>
"
  [1]=>
  string(1671) "
    <span style="display: none;">&#160;</span></div>
<p>
    Aenean aliquet rutrum fringilla. Pellentesque non ultrices erat, non luctus lectus. Pellentesque eget neque eget augue imperdiet venenatis eu nec odio. Nulla suscipit enim et nunc consequat, sed venenatis est consectetur. In posuere, diam convallis vestibulum congue, augue turpis vulputate lacus, malesuada luctus turpis magna adipiscing erat. Pellentesque id dui aliquam, viverra nunc ac, sagittis sapien. Phasellus nec consectetur nisl, vitae facilisis metus. Donec odio mauris, egestas vitae dolor sed, rutrum sollicitudin massa. Vestibulum fringilla, ante et aliquet pharetra, lorem nisl posuere dui, at pellentesque velit dui in purus. Aenean nec accumsan arcu. Proin dapibus orci ac est vestibulum, interdum pharetra sem vestibulum. Donec ut vehicula elit. Duis feugiat neque vitae purus molestie sodales. Nulla leo nibh, rhoncus a nisi sed, hendrerit laoreet tortor.</p>
"
}
数组(2){
[0]=>
字符串(1230)”

这是一种对公共财产的威胁。佩伦特式的居住者莫比·特里斯蒂克·塞内特斯和内特斯·马莱苏达是一种著名的土耳其土耳其人。但是,智者的直径,是一种对公共财产的保护。这是一种温和的猫科动物。莫比·亨德雷特·比本杜姆·尼西,是一种对公共财产自由的保护乌拉姆科珀·马萨(ullamcorper massa)的非特殊饮食危害着饮食。在矢状肌缺陷中,lobortis adipsicing nunc bibendum id.Etiam sed molestie lacus.Nullam dapibus mauris eget nis congue semper.Donec element um eu magna sit amet tincidut.Vivamus tincidut placerat egestas.mauris frongilla nuc eget purus adipsicing,eu laoret erat pretium.Curabitur aliquam前庭拍卖人。请与nibh协商

" [1]=> 字符串(1671)”   埃涅亚·阿利奎特·鲁特鲁鲁姆·弗林利亚。佩伦斯凯·非特蕾特,非卢克图斯·莱克图斯。佩伦斯凯·内克·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·维内特·维内特·欧内斯·欧佩克·奥迪·维内特·欧佩奥。无主和无主,这是维内特的圣殿。在波苏尔,康沃尔·康瓦利的前庭,奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯·奥古斯特·奥古斯特·奥古斯两人一组,viverra nunc ac,sagittis sapien.一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组,一组我的前庭里有一间药房,里面有一辆精英汽车,里面有一辆私人汽车,一辆私人汽车,一辆私人汽车

" }
您可以拆分字符串,而无需
分页符
这样的代码:

$aMatches = preg_split('#<div style="page-break-after\: always;\">(.*)<\/div>#s', $sText);
$aMatches=preg#u split('#(.*)#s',$sText);
输出
数组(大小=2)
0=>string'Etiam在auctor massa。在eget turpis中是狮子座的拍卖人。福斯·卢克图斯·菲利斯是一名临时驾驶员。这是一种巨大的酒,是一种圣洁的酒,是一种发酵剂。爱神之神。但非埃拉特和埃尼姆酒庄发酵。pulvinar的sollicitudin河。这是孕妇的基本生活方式。前庭在怀孕前为非舌骨。在奥古斯,这是一个巨大的挑战

'(长度=456) 1=>string'Aenean aliquet rutrum fringilla。佩伦特斯式的非尤特莱斯埃拉特,非卢克图斯莱克托。佩伦特斯凯·内克·埃格·奥古斯·奥古斯·威尼那特是欧盟的新成员。在威尼斯最神圣的地方,有一座教堂。在波苏尔,前庭直径为圆形,前庭直径为圆形,前庭直径为圆形,前庭直径为圆形,前庭直径为圆形,前庭直径为圆形,前庭直径为圆形。佩伦茨克酒后驾车,维韦拉·努克·ac,萨吉提斯·萨皮恩。第二阶段,为您提供便利。Donec odio mauris,egestas vitae dolor'。。。(长度=891)
如果innerHTML实际上包含一个字符串
分页符
?此外,表达式应该是
/\bpage \-break\b/
,我认为这个解决方案不错,但是当有人更改代码时会发生什么,我们会有这样的结果: ;不幸的是,《邮报》下的安维林不接受格式化。请检查第一篇文章中的编辑。我写了
(.*)
<代码>(.*)平均值在div之间。只需开始和结束
div
重要。我同意这一点,但它仍然
$aMatches = preg_split('#<div style="page-break-after\: always;\">(.*)<\/div>#s', $sText);
array (size=2)
  0 => string '<p>Etiam at auctor massa. In eget turpis a leo auctor molestie. Fusce luctus felis ac porttitor tempor. Etiam est magna, convallis a consectetur eget, fermentum ac risus. Etiam ut dapibus eros. Ut non erat et enim scelerisque fermentum. Praesent cursus sollicitudin pulvinar. Cras faucibus mauris eget velit elementum gravida. Vestibulum vel leo ut justo pretium gravida a non ligula. Aliquam imperdiet metus ut odio varius viverra et at augue.</p>
' (length=456)
  1 => string '<p>Aenean aliquet rutrum fringilla. Pellentesque non ultrices erat, non luctus lectus. Pellentesque eget neque eget augue imperdiet venenatis eu nec odio. Nulla suscipit enim et nunc consequat, sed venenatis est consectetur. In posuere, diam convallis vestibulum congue, augue turpis vulputate lacus, malesuada luctus turpis magna adipiscing erat. Pellentesque id dui aliquam, viverra nunc ac, sagittis sapien. Phasellus nec consectetur nisl, vitae facilisis metus. Donec odio mauris, egestas vitae dolor'... (length=891)