diff --git a/src/NexmoMessage.php b/src/NexmoMessage.php index 1c637db..a290b8b 100644 --- a/src/NexmoMessage.php +++ b/src/NexmoMessage.php @@ -83,10 +83,10 @@ function sendText ( $to, $from, $message, $unicode=null ) { return false; } - if ($unicode === null) { - $containsUnicode = max(array_map('ord', str_split($message))) > 127; + if (!is_null($unicode)) { + $unicode = (boolean) $unicode; } else { - $containsUnicode = (bool)$unicode; + $unicode = !$this->stringIsGSM0338($message); } // Make sure $from is valid @@ -101,7 +101,7 @@ function sendText ( $to, $from, $message, $unicode=null ) { 'from' => $from, 'to' => $to, 'text' => $message, - 'type' => $containsUnicode ? 'unicode' : 'text' + 'type' => $unicode ? 'unicode' : 'text' ); return $this->sendRequest ( $post ); @@ -433,4 +433,33 @@ public function reply ($message) { return $this->sendText($this->from, $this->to, $message); } + public function stringIsGSM0338($str) { + + $gsm0338 = array( + '@','Δ',' ','0','¡','P','¿','p', + '£','_','!','1','A','Q','a','q', + '$','Φ','"','2','B','R','b','r', + '¥','Γ','#','3','C','S','c','s', + 'è','Λ','¤','4','D','T','d','t', + 'é','Ω','%','5','E','U','e','u', + 'ù','Π','&','6','F','V','f','v', + 'ì','Ψ','\'','7','G','W','g','w', + 'ò','Σ','(','8','H','X','h','x', + 'Ç','Θ',')','9','I','Y','i','y', + "\n",'Ξ','*',':','J','Z','j','z', + 'Ø',"\x1B",'+',';','K','Ä','k','ä', + 'ø','Æ',',','<','L','Ö','l','ö', + "\r",'æ','-','=','M','Ñ','m','ñ', + 'Å','ß','.','>','N','Ü','n','ü', + 'å','É','/','?','O','§','o','à' + ); + + $len = mb_strlen($str, 'UTF-8'); + + for( $i=0; $i < $len; $i++) + if (!in_array(mb_substr($str,$i,1,'UTF-8'), $gsm0338)) + return false; + + return true; + } }