aboutsummaryrefslogtreecommitdiff
path: root/src/callnotifier/Functions.php
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2013-08-11 22:05:36 +0200
committerChristian Weiske <cweiske@cweiske.de>2013-08-11 22:05:36 +0200
commit1d01023d44f2d338b8bbcd28f0830ce813c2595d (patch)
tree293f4881d0f1b46371f67a1f4cb3da3efcfd8b7a /src/callnotifier/Functions.php
parent0afefd0cc71d0c107edf371a6a3bdf5b3e36652f (diff)
downloadauerswald-callnotifier-1d01023d44f2d338b8bbcd28f0830ce813c2595d.tar.gz
auerswald-callnotifier-1d01023d44f2d338b8bbcd28f0830ce813c2595d.zip
use multibyte functions
Diffstat (limited to 'src/callnotifier/Functions.php')
-rw-r--r--src/callnotifier/Functions.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/callnotifier/Functions.php b/src/callnotifier/Functions.php
new file mode 100644
index 0000000..406317f
--- /dev/null
+++ b/src/callnotifier/Functions.php
@@ -0,0 +1,60 @@
+<?php
+namespace callnotifier;
+
+/**
+ * Some helper functions
+ */
+class Functions
+{
+ /**
+ * Multibyte-version of str_pad
+ *
+ * @link http://stackoverflow.com/a/14773638/282601
+ */
+ public static function mb_str_pad(
+ $input, $pad_length, $pad_string = ' ',
+ $pad_type = STR_PAD_RIGHT, $encoding = 'UTF-8'
+ ) {
+ if (!function_exists('mb_substr')) {
+ return str_pad($input, $pad_length, $pad_string, $pad_type);
+ }
+
+ $input_length = mb_strlen($input, $encoding);
+ $pad_string_length = mb_strlen($pad_string, $encoding);
+
+ if ($pad_length <= 0 || ($pad_length - $input_length) <= 0) {
+ return $input;
+ }
+
+ $num_pad_chars = $pad_length - $input_length;
+
+ switch ($pad_type) {
+ case STR_PAD_RIGHT:
+ $left_pad = 0;
+ $right_pad = $num_pad_chars;
+ break;
+
+ case STR_PAD_LEFT:
+ $left_pad = $num_pad_chars;
+ $right_pad = 0;
+ break;
+
+ case STR_PAD_BOTH:
+ $left_pad = floor($num_pad_chars / 2);
+ $right_pad = $num_pad_chars - $left_pad;
+ break;
+ }
+
+ $result = '';
+ for ($i = 0; $i < $left_pad; ++$i) {
+ $result .= mb_substr($pad_string, $i % $pad_string_length, 1, $encoding);
+ }
+ $result .= $input;
+ for ($i = 0; $i < $right_pad; ++$i) {
+ $result .= mb_substr($pad_string, $i % $pad_string_length, 1, $encoding);
+ }
+
+ return $result;
+ }
+}
+?>