diff options
author | Joas Schilling <coding@schilljs.com> | 2019-12-04 10:29:30 +0300 |
---|---|---|
committer | Backportbot <backportbot-noreply@rullzer.com> | 2019-12-04 17:39:19 +0300 |
commit | c1c0cd57456bd2b4fb7998af5e2b2e6394ef300f (patch) | |
tree | 446825db8956cf7fa43a49b47397b1a920803129 | |
parent | ebe9d4aeb4dd10155162b00450374f12c6c6a6c5 (diff) |
Fix cutting of multibyte characters
Signed-off-by: Joas Schilling <coding@schilljs.com>
-rw-r--r-- | lib/Push.php | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Push.php b/lib/Push.php index e5f3e31..f381d20 100644 --- a/lib/Push.php +++ b/lib/Push.php @@ -194,9 +194,10 @@ class Push { // Max length of encryption is 255, so we need to shorten the subject to be shorter $subject = $notification->getParsedSubject(); - $dataLength = 245 - strlen(json_encode($data)); + // Half the length for multibyte characters like Russian, Chinese, Japanese, Emojis, … + $dataLength = floor((245 - strlen(json_encode($data))) / 2) - 1; if (strlen($subject) > $dataLength) { - $data['subject'] = substr($subject, 0, $dataLength) . '…'; + $data['subject'] = mb_substr($subject, 0, $dataLength) . '…'; } else { $data['subject'] = $subject; } |