Welcome to WebmasterWorld Guest from

Forum Moderators: coopster & jatar k

substr(stripslashes(trim - Trimming at the next sentence

Trying to insert tag at next sentence rather than at specified character.

9:49 pm on Jan 9, 2011 (gmt 0)

I have a code see below:

<b><?= stripslashes($newstitle)?></b><br><br />

<b><?= stripslashes($detrsltnewsrow['sourceagency'])?></b>&nbsp;- &nbsp;<?=$ndt?>


<?= substr(stripslashes(trim($detrsltnewsrow[news_desc])),0,701)?>


<tr><td colspan="2" class="para" style="padding-left:10px;"><?= substr(stripslashes(trim($detrsltnewsrow[news_desc])),701)?></td></tr>

It inserts the tag
</td></tr><tr><td colspan="2" class="para" style="padding-left:10px;">
at the break of the 701 character. I want it to insert this at the end of a sentence at above 701 character of a description text. The way i have it it breaks the word if it hits the 701 character in the middle of the word. Will like it to insert the tags above at the next sentence after the 701 character. Any assistance.. will be appreciated...
2:37 pm on Jan 10, 2011 (gmt 0)

10+ Year Member

I created this bit, and am using it everywhere since:

$longstring = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque faucibus urna non velit elementum eu molestie quam posuere. In non risus sem, id convallis ligula. Proin felis erat, adipiscing vel dapibus tempus, gravida eu purus. Proin lacus eros, adipiscing cursus malesuada a, consectetur ac mi. Sed eros elit, commodo ut fermentum non, mattis ac mauris. Mauris a risus convallis est condimentum accumsan vitae sagittis erat. Maecenas vestibulum imperdiet vulputate. Donec sed quam sit amet velit malesuada tincidunt. Etiam auctor dignissim egestas. Aliquam sed neque eros. Vivamus tellus lorem, consectetur sit amet pellentesque in, porta venenatis tellus. Morbi vitae augue eget dui rhoncus gravida. Ut eget odio in lacus pharetra pellentesque.';
$out = preg_replace('/^(.{10}[^.]*).*/i','$1.',$longstring);
echo $out; // Lorem ipsum dolor sit amet, consectetur adipiscing elit.

{10} specifies the minimum length of the trim you need (that would be {710} in your case), and after that it goes on until it sees a full stop [^.]
You can add more characters here, that would trigger a cut, like [^.,-_:\s]
10:01 pm on Jan 10, 2011 (gmt 0)

Thanks Alias...

Though how do I put it in this line of tag.. I tried different ways and I keep getting an error.. in the

<?= substr(stripslashes(trim($detrsltnewsrow[news_desc])),0,701)?>
11:33 pm on Jan 10, 2011 (gmt 0)

$out = preg_replace('/^(.{701}[^.]*).*/i','$1.',$detrsltnewsrow[news_desc]);
echo $out;


<tr><td colspan="2" class="para" style="padding-left:10px;"><?= substr(stripslashes(trim($detrsltnewsrow[news_desc])),701)?></td></tr>

OK. I figured out the way to output it.. Now how do we have it to continue from where it stopped.. in the next substring that Shows:
<?= substr(stripslashes(trim($detrsltnewsrow[news_desc])),701)?>

So basically I want to start another output starting from the next sentence after the character 701 int he text. Basically a continuation of the above statement $out
9:44 am on Jan 11, 2011 (gmt 0)

10+ Year Member

In that case you'll have to do it a bit differently:

$longstring = 'First sentence. Second sentence. Third sentence.';
$out = preg_match('/^(.{10}[^.]*)(.*)/i', $longstring, $matches);

That will print you out an array, $matches[0] being the whole string, $matches[1] being the first part of the string, $matches[2] being the rest of the string (with a dot in the beginning, which you should be able to take care of yourself without any problems I believe).
9:47 am on Jan 11, 2011 (gmt 0)

10+ Year Member

Oops, a quick note - you don't need to assign $out like I did in the example before, so it's just this:

$longstring = 'First sentence. Second sentence. Third sentence.';
preg_match('/^(.{10}[^.]*)(.*)/i', $longstring, $out);

Featured Threads

My Threads

Hot Threads This Week

Hot Threads This Month