|
ТЕХНОЛОГИЯ СМЕШАННОГО НАБОРАРеализация на PHP: Основные функции zam( ) Простые и рекурсивные замены в строке Функция zam( ) применяет к строке
преобразование, указанное именем. Имя преобразования указывает на
заготовленный массив замен или пользовательскую функцию.
|
Использование: |
$text1 = zam($text,$zamname) $text1 = zam($text,$zamname,$zamenstr,$razdel) |
Все параметры и возвращаемое значение — строки.
$text — преобразуемая строка,
$zamname — имя преобразования,
$zamenstr — строка с заменами в формате файла замен (по умолчанию пуста).
$razd — разделитель строк в $zamenstr (по умолчанию ";").
Действие: Способ преобразования строки $text определяется способом вызова.
Пример 1.1: $text1=zam($text,"slav!UCS")
1.2. Если файла с заданным именем не существует,
то в качестве преобразования берётся PHP-функция, имя которой
равно первому слову строки $zamname
(до первого пробела или конца строки). В качестве
первого параметра функция принимает $text, в качестве второго —
остаток строки (после первого пробела, в частности пустую строку).
Пример 1.2: $text1=zam($text,"itemshow RI"). 2. Второй формат (точнее: если строка $zamenstr непуста), задаёт
преобразование по списку замен, заданному непосредственно — в строке
$zamname. Символ $razd разделяет отдельные замены, как конец строки
в файле замен.
Обязательный параметр $zamname содержит имя этой системы замен для
последующих коротких вызовов (в первом формате вызова).
Пример 2:
$text1=zam($text,'упрощение','|w|о|;|_е|е|;|v"|и|',';'). Глобальные переменные
global $ZAM_default_url — доступ к системной библиотеке файлов замен.
По умолчанию "http://znamen.ru/tsn/".
global $ZAMurl — путь к папке файлам замен, где они ищутся
прежде, чем в системной библиотеке. По умолчанию "".
global $ZAMerr — код завершения исполнения. Складывается
из кодов замечаний:
Доступ к функции: <? include "http://znamen.ru/tsn/zamlib.php"; ?>
Формат файла замен
1. Короткий формат вызова использует преобразование, уже
зарегистрированное в памяти под именем, которое содержит параметр $zamname.
Если же это первый вызове функции с таким начением $zamname,
то преобразование перед применением находится как текстовый
массив замен (в пользовательском или системном каталоге) или
как PHP-функция:
1.1. Если существует файл с именем $zamname
(расширение по умолчанию .zmn), то преобразование —
это массив замен для стандартной PHP-процедуры strtr( ),
записанный в текстовом файле (см. ниже «Формат записи»).
С массивом в файле может связываться метка повтора,
в таком случае замены применяются снова, пока она остаётся в строке,
а применение замен не оказывается безрезультатным (меняет строку).
С массивом замен могут быть заданы также начинательная и/или
окончательная последовательность символов, которые будут добавляться
соответственно, в начало и конец текста перед началом работы.
Здесь преобразуется церковнославянский текста (в формате HIP)
в шрифтовую кодировку UCS через набор замен из файла slav!UCS.zmn.
Если файла "itemshow RI.zmn" не существует, то результат равен itemshow($text,"RI").
Набор замен выписан явно. После этого вызова, его можно использовать повторно коротким вызовом:
zam($text2,'упрощение');
1
: в тексте остались метки повтора массива замен
2
: массив замен взят из системной библиотеки
4
: в массиве замен повтор
8
: в массиве замен неоднозначность (оставлено первое соответствие заменяемому)
16
: ошибка в строке файла замен: нет второго разделителя (строка игнорируется)
32
: ошибка в строке файла замен: нет третьего разделителя (строка игнорируется)
64
: нет файла замен с именем $zamname
128
: нет ни файла замен, ни PHP-функции с именем $zamname
Формат строки с заменой: |«заменяемое»|«заменяющее»|.
Вместо «|» (разделителя) может быть любой видимый символ,
один и тот же для одной замены, не входящий ни в «заменяемое»,
ни в «заменяющее».
Каждая замена занимает в файле одну строку. При необходимости
ввести в заменяемое или заменяющее конец строки, он вводится в строку
четырьмя символами: \r\n.
Игнорируются: пустые строки, строки с пустым заменяемым и
части строк после третьего в них разделителя.
Особое значение имеют несколько (от 1 до 3) подряд первых
строк файла, если они начинаются с "&&". В этом случае
их остаток, начиная с третьего символа, не игнорируется,
а служит источником следующих параметров массива замен:
– в строке 1 — метки повтора,
– в cтроке 2 — начинательной строки,
– в строке 3 — окончательной строки.
См. Готовые файлы замен