在变量上使用多个preg_replace和str_replace是安全的吗?
$this->document->setDescription(tokenTruncate(str_replace(array("\r", "\n"), ' ', preg_replace( '/\s+/', ' ',preg_replace("/[^\w\d ]/ui", ' ', $custom_meta_description))),160));
这是我用来删除换行符,空格和所有非字母数字字符(不包括unicode)的代码。最后一个preg_replace用于非字母数字字符,但也删除了点。有没有办法保持点,逗号, - 分隔符?
谢谢!
答案 0 :(得分:1)
使用单个preg_replace
语句可以实现您要做的事情:
$str = preg_replace('#\P{Xwd}++#', '', $str);
$this->document->setDescription($desc, tokenTruncate($str, 160));
上述preg_replace()
语句将替换所提供字符串中不是Unicode数字,字母或空格的任何内容。
有关详细信息,请参阅Unicode Reference。
答案 1 :(得分:1)
您想要的只需一个表达式:
preg_replace('/(?:\s|[^\w.,-])+/u', ' ', $custom_meta_description);
它替换了空格(制表符,换行符)或非字样,数字或标点符号。