ci4

Форк
0
/
xml_helper.php 
61 строка · 1.4 Кб
1
<?php
2

3
declare(strict_types=1);
4

5
/**
6
 * This file is part of CodeIgniter 4 framework.
7
 *
8
 * (c) CodeIgniter Foundation <admin@codeigniter.com>
9
 *
10
 * For the full copyright and license information, please view
11
 * the LICENSE file that was distributed with this source code.
12
 */
13

14
// CodeIgniter XML Helpers
15

16
if (! function_exists('xml_convert')) {
17
    /**
18
     * Convert Reserved XML characters to Entities
19
     */
20
    function xml_convert(string $str, bool $protectAll = false): string
21
    {
22
        $temp = '__TEMP_AMPERSANDS__';
23

24
        // Replace entities to temporary markers so that
25
        // ampersands won't get messed up
26
        $str = preg_replace('/&#(\d+);/', $temp . '\\1;', $str);
27

28
        if ($protectAll === true) {
29
            $str = preg_replace('/&(\w+);/', $temp . '\\1;', $str);
30
        }
31

32
        $original = [
33
            '&',
34
            '<',
35
            '>',
36
            '"',
37
            "'",
38
            '-',
39
        ];
40

41
        $replacement = [
42
            '&amp;',
43
            '&lt;',
44
            '&gt;',
45
            '&quot;',
46
            '&apos;',
47
            '&#45;',
48
        ];
49

50
        $str = str_replace($original, $replacement, $str);
51

52
        // Decode the temp markers back to entities
53
        $str = preg_replace('/' . $temp . '(\d+);/', '&#\\1;', $str);
54

55
        if ($protectAll === true) {
56
            return preg_replace('/' . $temp . '(\w+);/', '&\\1;', $str);
57
        }
58

59
        return $str;
60
    }
61
}
62

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.