Начальная страница

Николай Жарких (Киев)

Персональный сайт

?

Замена текстов

Для замены текстов следует зарегистрироваться в Смереке с правами редактора, выбрать вершину для замены и нажать кнопку «Заменить» на панели инструментов слева от инспектора.

Эта кнопка вызывает диалог замены текстов. В нем следует задать: имя атрибута, в котором нужно провести замену, текст, который нужно найти, текст, который нужно вставить вместо найденного, селектор «Домен» и селектор «Режим замены».

Селектор «Домен» задает область действия команды. Это может быть одно из следующих значений: текущая вершина, крона (текущая вершина + все подчиненные ей вершины), дочерние вершины (только подчиненные вершины, без текущей), равные вершины и равные вершины с кронами.

Селектор «Режим замены» можно установить в одно из следующих значений: литеральний, расширенный, preg_replace.

Перед выполнением команды тексты поиска и замены нормализуются, т.е. все переводы строк приводятся к Windows стилю – CR + LF. Поскольку этот стиль является внутренним стилем Смереки для хранения текстов, замена текста из многих строк становится более предсказуемой.

Следует знать, что для языково-зависимых атрибутов команда «Замена текста» выполняет замену только в текущей языковой версии атрибутов.

Литеральний режим замены

При литеральном режиме все символы текста поиска и текста замены воспринимаются литерально, т.е. представляют сами себя. Никакие замены и подстановки в них не выполняются, все пробельные символы интерпретируются так, как они записаны. При этом пользователь имеет две возможности:

1. Если поле «Искать» заполнено, заданный атрибут сканируется и все вхождения текста для поиска заменяются на текст замены (который может быть пустым, в этом случае искомые фрагменты просто удаляются).

2. Если поле «Искать» не заполнено, заданный атрибут безусловно заменяется на текст замены. Этот вариант использования команды очень похож на команду «Установить атрибут», с той разницей, что данная команда может установить текст из многих строк, а команда «Установить атрибут» – только текст в одну строку.

Расширенный режим замены

При расширенном режиме замены текст поиска интерпретируется литерально, а текст замены должен содержать магические символы.

Добавить сначала / в конце

Чтобы воспользоваться возможностью добавить текст в начале или в конце атрибута, надо оставить текст поиска пустым. В тексте замены магические символы [DdtSp] и [DdtKn] выступают маркерами текстов, которые нужно вставить соответственно перед или после существующего значения атрибута.

Например, пусть текст замены имеет вид:

[DdtSp]У попа [DdtKn] Мерседес.

(обратите внимание на запись в одну строку и пробелы), а набор вершин имеет в каком атрибуте значения:

была собака
был автомобиль
было начальство

Тогда результатом выполнения данной команды будет набор значений:

У попа была собака Мерседес.
У попа была автомобиль Мерседес.
У попа была начальство Мерседес.

Текст замены может содержать только один из маркеров; но если заданы оба, то сначала должна идти [DdtSp], а после него – [DdtKn].

Заменить голову / хвост

Текст поиска должен быть задан. Текст замены должен содержать магические символы [GlvA] и / или [XvsT]. Если атрибут содержит текст поиска, то текст, который идет перед ним, считается головой, а текст, который идет после него – хвостом. Команда заменяет в тексте замены магический символ [GlvA] на голову, а магический символ [XvsT] – на хвост.

Например, если задано текст поиска <hr> и текст замены [GlvA], то из каждого атрибута, который содержит такой дескриптор горизонтальной линии, будут удалено все, что идет после этой линии (включая саму линию, то есть сам текст поиска. Если текст замены задано как [GlvA] <hr>, к главе будет присоединен указанный текст. Аналогично, если текст замены задано как [XvsT], из атрибута удаляется все, что идет перед текстом поиска (и сам текст поиска).

Текст замены, заданный как [XvsT] [GlvA], позволяет поменять местами голову и хвост текста атрибута, и так далее.

Следует учитывать, что в этом режиме используется только первое вхождение текста поиска значения атрибута.

Режим замены правилам-выражениями

В режиме замены preg_replace обработку текста атрибута выполняет функция PHP:

preg_replace ([Текст поиска], [Текст замены], [Значение атрибута])

Итак, текст поиска должен быть корректным правилом-выражением, соответствующий синтаксиса PCRE (Perl-Compatible Regular Expressions), включая символы-ограничения и модификаторы. Соответственно текст замены может содержать ссылки на найденные фрагменты, как это объяснено в документации PHP. Следует учитывать, что в этом режиме выполняется замена всех фрагментов, соответствующих заданному правилу.