3 posts by 3 authors in: Forums > CMS Builder
Last Post: November 28, 2018   (RSS)

By gkornbluth - November 27, 2018 - edited: November 27, 2018

Hi Kenny,

Just a guess, but:

str_replace replaces a specific occurrence of a string, for instance "foo" will only match and replace that: "foo". preg_replace will do regular expression matching, for instance "/f.{2}/" will match and replace "foo", but also "fey", "fir", "fox", "f12", etc.

Try using preg_replace instead of str_replace and see what you get, or try using an array with str_replace

<?php str_replace(array(' ',' ',''), "$hashtagbtn #",$social_media_postsRecord['hashtags']); ?> (cobbled this together from something I found on the web, so no guarantees. Not sure about the number of single quotes in the array)

There are a bunch of recipes that discuss how to use regular expressions in my CMSB Cookbook. http://www.thecmsbcoobook.com

Hope that helps,

Jerry Kornbluth

The first CMS Builder reference book is now available on-line!

Take advantage of a free 3 month trial subscription, only for CMSB users, at: http://www.thecmsbcookbook.com/trial.php

By Dave - November 28, 2018

Hi KennyH, 

Yea, Jerry has the right idea.  The "regular expression" matching functions let you match a pattern instead of just some characters.  Try this:

$tags = preg_split("/\s*,\s*/", $social_media_postsRecord['hashtags']);

This splits your string into an array of tags. /s means space character and * means 0 or more.  So if will match a comma surround by zero or more spaces on either side.  For more details: http://php.net/manual/en/function.preg-split.php

Then to display it you could use something like this: 

<?php foreach ($tags as $tag): ?>
  <li class="list-inline-item">
    <a href="#" class="badge badge-dark badge-md badge-pill">#<?php echo $tag; ?></a>
<?php endforeach ?>

Note that you could also just swap str_replace for preg_replace, but you might find using preg_split() produces cleaner code.  Either way is fine.

Hope that helps!

Dave Edis - Senior Developer