Question

It is safe to use multiple preg_replace and str_replace on a variable?

$this->document->setDescription(tokenTruncate(str_replace(array("\r", "\n"), ' ', preg_replace( '/\s+/', ' ',preg_replace("/[^\w\d ]/ui", ' ', $custom_meta_description))),160));   

This is a code which I am using to remove newlines, whitespaces and all non-alphanumeric characters (excluding unicode). The last preg_replace is for the non-alphanumeric characters, but dots are removed too. Is there any way to keep dots, commas, - separators?

Thanks!

Was it helpful?

Solution

What you want can be done in a single expression:

preg_replace('/(?:\s|[^\w.,-])+/u', ' ', $custom_meta_description);

It replaces either spaces (tabs, newlines as well) or things that aren't word-like, digits or punctuation.

OTHER TIPS

What you're trying to do can be achieved with a single preg_replace statement:

$str = preg_replace('#\P{Xwd}++#', '', $str);
$this->document->setDescription($desc, tokenTruncate($str, 160));

The above preg_replace() statement will replace anything that's not a Unicode digit, letter or whitespace from the supplied string.

See the Unicode Reference for more details.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top