Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - помогите найти ошибку в шаблоне / 4 сообщений из 4, страница 1 из 1
18.04.2021, 20:20
    #40063617
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - помогите найти ошибку в шаблоне
Есть следующий шаблон:
Код: plaintext
/{((\\u[0-9a-f]+|u\+[0-9a-f]+)+)}/i
К нему контрольный текст: {😡} {\u1F600} {U+1F600}
На regex101.com шаблон работает правильно.
А при использовании в PHP выдает ошибку "Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 4".
По смещению 4 у меня указан литерал u.
...
Рейтинг: 0 / 0
18.04.2021, 20:39
    #40063619
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - помогите найти ошибку в шаблоне
Разобрался.
При задании шаблона я использовал одиночные кавычки, но в них обратный слеш нужно экранировать дополнительно.
То есть не \\u, а \\\\u.
...
Рейтинг: 0 / 0
18.04.2021, 20:55
    #40063627
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - помогите найти ошибку в шаблоне
Код: php
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.
        static function emoji($text)
        {
                $re = '/{((\\\\u[0-9a-f]+|u\\+[0-9a-f]+)+)}/i';
                $s = preg_replace_callback(
                        $re,
                        function ($m)
                        {
                                $s = $m[0];
                                if (preg_match('/(\\\\u|u\\+)([0-9a-f]{5,})/i', $m[1], $code)) {
                                        $code = hexdec($code[2]);
                                        if ($code > 0x10000) {
                                                $u1 = (($code - 0x10000) >> 10) + 0xD800;
                                                $u2 = (($code - 0x10000) % 0x400) + 0xDC00;
                                                $s = json_decode('"' . sprintf('\\u%X\\u%X', $u1, $u2) . '"');
                                        } else {
                                                $s = json_decode('"' . sprintf('\\u%X', $code) . '"');
                                        }
                                } else {
                                        $s = json_decode('"' . $m[1] . '"');
                                }
                                return $s;
                        },
                        $text
                );
                return $s;
        }


Преобразует emoji и смайлики, заданные кодом (кодовой точкой или дополненным кодом), если они заключены в фигурные скобки.
...
Рейтинг: 0 / 0
19.04.2021, 12:35
    #40063794
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP - помогите найти ошибку в шаблоне
Не могу понять.
Код: php
1.
2.
print "RE: " . '/^\d{3}-\d{4}$/' . "|\n";
print "RE: " . '/^\\d{3}-\\d{4}$/' . "|\n";


Код: plaintext
1.
2.
RE: /^\d{3}-\d{4}$/|
RE: /^\d{3}-\d{4}$/|
Почему так?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - помогите найти ошибку в шаблоне / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]