Test Failed
Push — master ( 546388...b5cf4d )
by Mr
02:26
created

Cleaner::fixQuotes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace DrMVC\Helpers;
4
5
/**
6
 * Class Cleaner
7
 * @package DrMVC\Helpers
8
 */
9
class Cleaner
10
{
11
12
    const INT = '\D';
13
    const FLOAT = self::INT . '\,\.';
14
    const CHARS_RUS = 'а-яё';
15
    const CHARS_ENG = 'a-z';
16
17
    private static function fixQuotes($value): string
18
    {
19
        return htmlspecialchars(addslashes($value), ENT_QUOTES);
20
    }
21
22
    private static function fixNewlines($value): string
23
    {
24
        return preg_replace(['/\r\n\r\n/', '/\n\n/'], ['<br/>', '<br/>'], $value);
25
    }
26
27
    private static function compileRegexp($line): string
28
    {
29
        return '/[^' . $line . ']/iu';
30
    }
31
32
    /**
33
     * Cleanup the value
34
     *
35
     * @param   string $value
36
     * @param   string $type
37
     * @return  mixed
38
     */
39
    public static function run(string $value, string $type = null)
40
    {
41
        switch ($type) {
42
            case 'int':
43
                $value = self::fixQuotes($value);
44
                $regexp = self::compileRegexp(self::INT);
45
                break;
46
            case 'float':
47
                $value = self::fixQuotes($value);
48
                $regexp = self::compileRegexp(self::FLOAT);
49
                break;
50
            case 'text':
51
                $value = self::fixQuotes($value);
52
                $value = self::fixNewlines($value);
53
                $regexp = self::compileRegexp(self::CHARS_RUS . self::CHARS_ENG);
54
                break;
55
            default:
56
                $value = self::fixQuotes($value);
57
                $value = self::fixNewlines($value);
58
                $regexp = self::compileRegexp(
59
                    self::CHARS_RUS . self::CHARS_ENG . self::FLOAT .
60
                    '\—\~\`\@\%\[\]\/\:\<\>\\\;\?\&\(\)\_\#\!\$\*\^\-\+\=\ \n\r'
61
                );
62
                break;
63
        }
64
65
        return preg_replace($regexp, '', $value);
66
    }
67
68
}
69