Початкова сторінка

Микола Жарких (Київ)

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

?

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

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

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

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

Селектор «Режим заміни» можна встановити в одне з наступних значень : літеральний, розширений, 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), включаючи символи-обмеження та модифікатори. Відповідно текст заміни може містити посилання на знайдені фрагменти, як це пояснено . Слід зважати, що в цьому режимі виконується заміна всіх фрагментів, які відповідають заданому правилу.