removing extra trailing spaces in html field

7 posts by 2 authors in: Forums > CMS Builder
Last Post: September 24, 2010   (RSS)

In the display of a WYSIWYG field, I would like to replace any instances of two empty spaces or more following a period with a single space following the period.

Example:
Sentence 1. Sentence 2. Sentence 3. Sentence 4.

Becomes:
Sentence 1. Sentence 2. Sentence 3. Sentence 4.

This is the code I arrived at based on other examples, but it's not quite right, as the extra spaces still display.

<?php
$html = preg_replace("/\s\s+/", " ", $artistsRecord['bio'] );
echo $html; ?>

Any advice would be greatly appreciated.
~ Deborah

Re: [Deborah] removing extra trailing spaces in html field

By Chris - September 22, 2010

Hi Deborah,

I think you'll want to use this as your regular expression instead:

<?php
$html = preg_replace("/\.\s\s+/g", ". ", $artistsRecord['bio'] );
echo $html; ?>


The /g makes it "global", meaning that the replace will be run as many times as necessary on the string instead of just once.

I hope this helps. Please let me know if you have any questions.
All the best,
Chris

Re: [chris] removing extra trailing spaces in html field

By Deborah - September 23, 2010 - edited: September 23, 2010

Hi, Chris.

Thanks for your help.

That bit of code produced this error:
Warning: preg_replace(): Unknown modifier 'g' in ..........

I then escaped the backslash and the error doesn't display, but then there is no effect on the spaces.
<?php $html = preg_replace("/\.\s\s+\/g/", ". ", $artistsRecord['bio'] ); echo $html; ?>

~ Deborah

Re: [chris] removing extra trailing spaces in html field

Chris,

Here's an example of WYSIWYG text that is not affected by my original code:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ligula lorem, consequat eget, tristique nec, auctor quis, purus. Vivamus ut sem. Fusce aliquam nunc vitae purus. Aenean viverra malesuada libero. Fusce ac quam.

If all spaces are stripped out, then replaced with a single space, that is what I'm trying to accomplish.

Thanks for your help.
~ Deborah

Re: [Deborah] removing extra trailing spaces in html field

By Chris - September 24, 2010

Hi Deborah,

I think I've figured this one out. The WYSIWYG adds special non-breaking space characters (A0 in ASCII, which is C2A0 in UTF-8) and "\s" doesn't match them. Try this:

<?php
$html = preg_replace("/\.(\s|\xC2\xA0)+/", ". ", $artistsRecord['bio'] );
echo $html; ?>


That seems to work for me.

I hope this helps! Please let me know if you have any questions.
All the best,
Chris

Re: [chris] removing extra trailing spaces in html field

Chris,

You did figure it out! The new code works for me, too.

You may have solved another mystery for me at the same time. I was seeing some odd characters in auto-generated emails that were receiving text from a WYSIWYG field. Now I understand why.

Thanks for the brilliant detective work! This is a useful snippet of code for me!

~ Deborah