Question

I have problem with splitting text by html tags. I'm using CKEditor to editing text and saving results to database. For better understanding my problem i'm putting sample text from 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>
"

As you see, for page braking CKEditor puted HTML tag with style attribute

style="page-break-after: always;"

I'd like split text by "page brake marker". For this i'm using this code.

$aMatches = preg_split('#%page_break%#', $sText);

What should i do to split this text with remove all html "page brake" DIV ?

Thanks in advance and sorry for my english

--

Formated code

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

--

Results

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

When i tried use this code i receive:

    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>
"

But, when im using this:

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

I receive that:

    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>
"
}
Was it helpful?

Solution

You can split your string without page-break codes like this:

$aMatches = preg_split('#<div style="page-break-after\: always;\">(.*)<\/div>#s', $sText);

Output

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)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top