Если вы видите эту страницу, значит вы установили Parser3 и пытаетесь его протестировать :)
Для тестирования необходимо, чтобы этот документ был перекодирован в кодировку, которая указана у вас в $request:charset.
Чтобы увидеть полные пути к конфигурационным файлам и DOCUMENT_ROOT - закоментируйте метод postprocess[]
Если что-либо выделено красным цветом, значит или что-то настроено неверно или автоматическое определение невозможно (это относится к поиску файлов библиотек и кодовых таблиц при заданных относительных путях).
| koi8-r | $charsetsdir/koi8-r.cfg (5104 байт) |
| windows-1251 | $charsetsdir/windows-1251.cfg (5128 байт) |
| protocol | parser driver | sql client library |
|---|---|---|
| mysql | $sqldriversdir/libparser3mysql.so (50008 байт) | libmysqlclient.so (относительный путь. |
| /../data/classes/sql | каталог существует |
| /../data/classes/auth | каталог существует |
| /../data/classes/io | каталог существует |
| /../data/classes/utils | каталог существует |
| /../data/classes/engine | каталог существует |
| /../data/classes | каталог существует |
Чтение $cookie:test: не определена
Запись в cookie значения ABC $cookie:test[ABC] (нажмите Reload для проверки)
^eval(9+5): 14
^math:random(1000): 564
^math:log(1000): 6.90775527898214
^math:log10(1000): 3
^math:uuid[]: 5BDF7B0A-3DC5-47FE-80E4-0D282761712B
^math:uid64[]: 66A73924AF68365B
^math:md5[СтРоКа]: 7dbe3ec30a840d95ff5a7e92bc9ae516
^math:crypt[СтРоКа;$apr1$]: $apr1$SgzX4Z7F$mYmO5A6Krtg37R43zdpRr/
^math:crc32[СтРоКа]: 2401019825
Задание $str[АбвГде]
Длина строки ^str.length[]: 6
Строка в верхнем регистре ^str.upper[]: АБВГДЕ
Строка в нижнем регистре ^str.lower[]: абвгде
Первые 2 символа строки ^str.left(2): Аб
Последние 3 символа строки ^str.right(3): Где
2-4 символы строки ^str.mid(1;3): бвГ
Поиск символа 'б' в строке ^str.pos[б]: 1
Поиск символа 'б' в строке начиная со 2 позиции ^str.pos[б](2): -1
Поиск символа 'X' в строке ^str.pos[X]: -1
Замена комбинации символов 'вГ' на XX с помощью ^str.match[вГ][]{XX}: АбXXде
Замена комбинации символов 'в' на 'Y', 'Г' на 'Z' с помощью ^str.replace[$repl]: АбYZде
^str.trim[both;е]: АбвГд
^str.trim[start;е]: АбвГде
^str.trim[end;е]: АбвГд
^str.trim[left;е]: АбвГде
^str.trim[right;е]: АбвГд
^str.base64[]: 0JDQsdCy0JPQtNC1
^str.js-escape[]: %u0410%u0431%u0432%u0413%u0434%u0435
^str:js-unescape[%u0410%u0431%u0432%u0413%u0434%u0435]: АбвГде
$form:a: 321
Safe преобразование $form:a в целое число: ^form:a.int(1): 321
1 значение $form:b: А
$form:qtail: не определено
$hash1[
$.a[1]
$.b[2]
$.c[3]
]
^hash1.foreach[key;value]{
$key=$value
}[<br />]
a=1
$tbl1[^table::create{name col1 col2
Вася 3 5
Дима 4 14}]
Количество строк таблицы $tbl1: 2| строка | column |
|---|---|
| 1 | name |
| 2 | col1 |
| 3 | col2 |
Вывод значений таблицы $tbl1:
| строка | name | col1 | col2 |
|---|---|---|---|
| 1 | Вася | 3 | 5 |
| 2 | Дима | 4 | 14 |
$tbl2[^table::create{name col1 col2
Вова 3 44}]
Количество строк таблицы $tbl2: 1
join таблицы $tbl1 к таблице $tbl2 [^tbl2.join[$tbl1]]
Количество строк таблицы $tbl2 ^tbl2.count[]: 3
Вывод полученой таблицы:
| строка | name | col1 | col2 |
|---|---|---|---|
| 1 | Вова | 3 | 44 |
| 2 | Вася | 3 | 5 |
| 3 | Дима | 4 | 14 |
select и вывод строк таблицы у которых значения в столбце col1 равны 3: ^tbl2.select($tbl2.col1 == 3)
| строка | name | col1 | col2 |
|---|---|---|---|
| 1 | Вова | 3 | 44 |
| 2 | Вася | 3 | 5 |
Получение из таблицы - хеша таблиц, где в качестве ключа выступает значение col1: $hData[^tbl2.hash[col1][$.distinct[tables]]]
Вывод полученного хеша таблиц:
| Ключ | Значение | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3 |
|
||||||||||||
| 4 |
|
Получение из таблицы - хеша строк, где в качестве ключа выступает значение столбца col2, а в качестве значения — name: $hData[^tbl2.hash[col2;name][$.type[string]]]
Вывод полученного хеша строк:
| Ключ | Значение |
|---|---|
| 44 | Вова |
| 5 | Вася |
| 14 | Дима |
$now[^date::now[]]
$now.day/$now.month/$now.year ${now.hour}:${now.minute}:$now.second: 7/12/2025 22:40:52
$now.week: 49
$now.weekyear: 2025
Вывод сегодняшней даты в sql формате ^now.sql-string[]: 2025-12-07 22:40:52
Вывод сегодняшней даты в виде UNIX timestamp ^now.unix-timestamp[]: 1765136452
Вывод сегодняшней даты в виде строки в формате GMT ^now.gmt-string[]: Sun, 07 Dec 2025 19:40:52 GMT
Номер последнего дня текущего месяца ^now.last-day[]: 31
Сдвиг даты на 5 дней назад ^now.roll[day](-5): 2/12/2025
Сдвиг полученой даты на 30 дней вперед ^now.roll[day](30): 1/1/2026
Запись таблицы $tbl1 в файл _test.cfg (^tbl1.save[_test.cfg]):
^file:dirname[/_test.cfg]: /
^file:basename[/_test.cfg]: _test.cfg
^file:justname[/_test.cfg]: _test
^file:justext[/_test.cfg]: cfg
Получение параметров сохраненного файла $fstat[^file::stat[_test.cfg]]:
Размер файла, байт [$fstat.size]: 42
cdate: 7/12/2025
adate: 7/12/2025
mdate: 7/12/2025
Загрузка данных в таблицу $tbl3 из файла _test.cfg и вывод ($tbl3[^table::load[_test.cfg]]):
| строка | name | col1 | col2 |
|---|---|---|---|
| 1 | Вася | 3 | 5 |
| 2 | Дима | 4 | 14 |
Копирование файла (^file:copy[_test.cfg;_copy.cfg]):
Удаление файла (^file:delete[_test.cfg]):
Создаем объект: $hf [$hf[^hashfile::open[_test]]]:
Количество записей: 28
Добавление новой записи (0E32D9A9-7520-4E92-B7A7-9F210723D6CC) на 3 дня:
$hf.[0E32D9A9-7520-4E92-B7A7-9F210723D6CC][ $.value[109201005] $.expires(3) ]Очистка hashfile от устаревших записей (^hf.cleanup[]):
| Переменная | Значение | Комментарий |
|---|---|---|
| SERVER_NAME | www.parser.ru | DNS имя сервера |
| QUERY_STRING | a=321&b=%D0%90 | Для получения параметров используйте класс $form |
| HTTP_REFERER | Откуда пришел посетитель (броузер может не передавать эту информацию) | |
| HTTP_USER_AGENT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) | Строка USER_AGENT броузера посетителя |
| HTTP_X_FORWARDED_FOR | Обычно заполнена если пришли через прокси | |
| REMOTE_HOST | ||
| REMOTE_ADDR | 216.73.216.10 | IP адрес посетителя |
| PARSER_VERSION | 3.5.0 (compiled on amd64-unknown-freebsd13.4) | Версия парсера (если не определена, то до 3.1.5) |
Выполнение простого SQL запроса ^int:sql{SELECT 2+2}:
4
SQL преобразование строки с русским алфавитом к верхнему регистру:
Преобразование регистра было произведено корректно.
Проверка значений переменных SQL сервера CHARACTER_SET/CHARACTER_SET_CLIENT:
Используемая версия MySQL сервера (10.5.27) сама умеет гибко перекодировать данные.
Ваши файлы храняться в кодировке UTF-8 ($request:charset), поэтому просто добавьте параметр
При этом в качестве кодировки, в которой данные будут храниться в базе данных, вы можете выбрать любую
кодировку, которая в состоянии хранить весь набор символов из кодировки UTF-8 ($request:charset).
Мы рекомендуем использовать для этого UTF-8.
При этом кодировку вы можете задать для конкретной базы данных, а не для всего сервера.
Создание объекта типа xdoc:
$xDoc[^xdoc::create{<?xml version="1.0" encoding="UTF-8"?>
<document>
<t attr="привет" n="123"/>
<t attr="пока" n="234" n2="xxx"/>
<text>текст</text>
</document>}]
Объект xdoc
| Поле | Описание | Значения | ||
|---|---|---|---|---|
| на начало работы | на текущий момент | после ^memory:compact[] | ||
| $status:rusage.utime (сек) | чистое время, затраченное текущим процессом | 0 | 0 | 0.011335 |
| $status:rusage.stime (сек) | время, сколько система читала ваши файлы | 0.017987 | 0.02973 | 0.02973 |
| $status:rusage.maxrss (блоков) | память, занимаемая процессом | 9736 | 9736 | 14908 |
| $status:memory.used (КБ) | занято | 2400 | 3244 | 2676 |
| $status:memory.free (КБ) | свободно (скорее всего фрагментирована) | 284 | 336 | 904 |
| $status:memory.ever_allocated_since_compact (КБ) | выделено с момента последней сборки мусора | 3212.5625 | 4850.515625 | 0 |
| $status:memory.ever_allocated_since_start (КБ) | выделено за все время обработки запроса | 3212.5625 | 4850.515625 | 4851.40625 |