<?php
function stripNonValidCharaters ($message) {
$message = mb_convert_encoding($message, 'UTF-16', 'UTF-8');
$count = 0;
//mostly taken from https://dynmark.uservoice.com/knowledgebase/articles/83496-gsm-alphabet-character-set
$search = [
'`', '‘', '’', //single quotes
'“', '”', //double quotes
'~', '¬', '|', //misc
chr(0xc2a0) //nbsp character
];
$replace = [
"'", "'", "'", //single quotes
'"', '"', //double quotes
'-', '-', 'I', //misc
" " //space
];
$message = str_replace($search, $replace, $message, $count);
$message = trim($message);
return ['message' => $message, 'replacements' => $count];
}
$message = "We can’t wait to see you at our Open Day next week. We’ve sent you an email with all the info you need. If you’ve not received it please call 01252 892883";
var_dump(stripNonValidCharaters($message));
array(2) {
["message"]=>
string(307) "W e c a n t w a i t t o s e e y o u a t o u r O p e n D a y n e x t w e e k . W e v e s e n t y o u a n e m a i l w i t h a l l t h e i n f o y o u n e e d . I f y o u v e n o t r e c e i v e d i t p l e a s e c a l l 0 1 2 5 2 8 9 2 8 8 3"
["replacements"]=>
int(0)
}