I want to replace all non printable characters, especially emojis from a text but want to retain the newline characters like n
and r
I currently have this for escaping the non printable characters but it escapes n
and r
also:
preg_replace('/[[:^print:]]/', '', $value);
Advertisement
Answer
[:print:]
is a POSIX character class for printable chars. If you use it in a negated character class, you can further add characters that you do not want to match with this pattern, i.e. you can use
preg_replace('/[^rn[:print:]]/', '', $value)
See the PHP demo:
$value = "OnetlinernThe second line"; echo preg_replace('/[^rn[:print:]]/', '', $value); // => Oneline // The second line
The [^rn[:print:]]
pattern matches all chars but printable, CR and LF chars.