I need to show a 4 line context all without tags and the rest of it only with <br> tag.
What I though for the first part is the following that runs correctly as I want:
- I
strip_tagsdescription and save it to$post - Get only 320 chars and save it to
$preview
code
$post = strip_tags($entry->description);
$preview = mb_substr($post, 0, 320, "UTF-8");
My problem is with the expanded preview, as I said it needs to start where $preview stopped and show only <br> tags
What I did is this but it is not working correctly
$expanded = mb_substr($entry->description, 321, 9999999, "UTF-8");
$expanded = strip_tags($expanded, '<br>');
The reason that is not working correctly is because when I echo $preview.$expanded; when the $preview ends, it usually continues with a break tag and then the text.
this is the `$preview`
and here goes `$expanded` that it does not continues from where `$preview` ended, usually with a half tag
p1BHvrI/AAAAAAAABm0/kMxU6nXgXSo/s320/20110921_125449.JPG" width="320" />
here goes the rest of the `$expanded`
My question is how $expanded starts correctly right after $preview ends without any “broken tags” as above?
UPDATE
as said because this is a tricky situation, maybe a possible solution is to replace $preview (320 chars) with $expanded (full content).
This is my expanding mechanism http://fiddle.jshell.net/r4F8Q/22/
It’s tricky to know how to handle this. Like you say there is a good chance that you will end up with a broken tag doing it the way you are above, because if your
mb_substrends up in the middle of a tag,strip_tags()won’t remove it correctly.Without seeing exactly how the mechanics of the expansion work at the client side I can’t say for sure, but I think you would want to do something more like this:
…and when you do the expansion, replace
$previewwith$description, rather than appending$descriptiondescription to the end of$preview.There is something else to consider here though – you should probably pass both strings through
htmlspecialchars()and if you do that with$description, the<>around the line breaks will be escaped as well, where you don’t want them to be. I can;t come up with an effective solution to this part, it probably needs some kind of horrible regex…