aboutsummaryrefslogtreecommitdiff
path: root/src/callnotifier/Functions.php
blob: 406317fcf8035bda88717146e86cd4a3b99bb513 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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;
    }
}
?>