Номер телефона

Последнее обновление:

Руководство по технологиии SSI

Часть 5

SSI - это Server Side Includes (технология динамической сборки сайта из его отдельных частей)

Условия и регулярные выражения

  • Виды условий и их запись
  • Регулярные выражения

ВИДЫ УСЛОВИЙ И ИХ ЗАПИСЬ

Раз уж нам пришлось в условии задать два значения на выбор с помощью оператора «или», пришло время рассказать и о других подобных операторах. Они используются только в условных конструкциях, но не в директивах. Их немного. Вот они:

Оператор

Описание

=

Равно (сдвоенный символ появился в спецификации XSSI)

==

!=

Не равно

<

Меньше

<=

Меньше или равно

>

Больше

>=

Больше или равно

!

Отрицание

&&

Логическое И

||

Логическое ИЛИ

Например, употребляя вместо равенства (=) неравенство (!=), наш код меню можно «перевернуть»:

<!--#if expr = "$QUERY_STRING='' || $QUERY_STRING != page1" -->
<td><div class="txtmenu"><a href="index.html?page1" class="lnkmenu">Главная</a></div></td>
<!--#else -->
<td><div class="txtmenu">Главная</div></td>
<!--#endif -->

Здесь мы использовали операторы как соответствие или несоответствие строке, но можно использовать их и в арифметическом смысле.

Например, в скрипт форматирования даты можно добавить возможность вывода слова «воскресенье» красным цветом. В DATE_LOCAL воскресенье — «нулевой» день. В нашем скрипте номера содержатся в переменной numday. Сделаем в выводящий код маленькую добавку:

<p><b>Сегодня
<!--#if expr = "$numday = 0" -->
<span style="color:red;"><!--#echo var = "day" --></span>,
<!--#else -->
<!--#echo var = "day" -->
,
<!--#endif -->
<!--#echo var = "date" --> <!--#echo var = "month" --> <!--#echo var = "year" -->
года.</b></p>

А можно «перевернуть», использовав сравнительный оператор «больше» (>):

<p><b>Сегодня
<!--#if expr = "$numday > 0" -->
<!--#echo var = "day" -->
,
<!--#else -->
<span style="color:red;"><!--#echo var = "day" --></span>,
<!--#endif -->
<!--#echo var = "date" --> <!--#echo var = "month" --> <!--#echo var = "year" -->
года.</b></p>

Сегодня четверг, 16 сентября 2021 года (заходите в воскресенье и посмотрите).

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

Неоднократно упоминается, что в условном операторе SSI можно использовать регулярные выражения. Однако об их синтаксе ничего конкретного не сказано, только упоминается, что он аналогичен синтаксису регулярных выражений в Unix-команде egrep (забегая вперёд, отметим, что далеко не всё из этого синтаксиса поддерживает SSI).

Вообще, регулярные выражения это набор специальных символьных конструкций-шаблонов, которые замещают определённый символ, набор символов или фрагмент текста. Когда в поиске Windows нам надо найти, скажем, все файлы .mp3, которые есть на компьютере, мы набираем в строке поиска *.mp3. «Звёздочка» — это регулярное выражение.

Обычно регулярные выражения используются как для поиска, так и для замены. В SSI возможен только поиск. Потому что их можно использовать только в условии условного оператора. А сохранить их в переменной уже не получится.

Все регулярные выражения в SSI помещаются между слэшами:

/выражение/

Вот перечень типичных полезных регулярных выражений SSI:

/строка/

Подстрока (фрагмент большей строки).
Например, /index/ при анализе строк
http://site.ru/index.html и http://site.ru/index.html
в обоих случаях возвратит истину

/^строка/

Подстрока в начале строки.
Например, /^html/ при анализе строки
htmlbook.ru/index.html
возвратит истину, распознав первые 4 символа

/строка$/

Подстрока в конце строки.
Например, /html$/ при анализе строки
htmlbook.ru/index.html
возвратит истину, распознав последние 4 символа

/[строка]/

Любая комбинация символов, присутствующих в исходной строке.
Например, /[кто]/, /[так]/ или /[сто]/ при анализе строки
строка
возвратит истину, а /[сыр]/ — ложь (из-за буквы «ы»)

/*/

Любые символы. Что бы ни нашли, всё подойдёт.

/ст.*.ка/

Если мы ищем любые символы во фрагменте строки, то этот фрагмент «свободного поиска» должен быть отделён точками.
Выражение /та.*.ка/ будет истинным для строк
тачка,
таранька,
таблетка.
А вот такая конструкция
/*...*/
возвратит истину для любой строки с точкой (например, index.html). Средняя точка — это точка в исходной строке, остальные — разделители.

/строка+/

Поиск повтора символа. Например, /е+/ возвратит истину для слов
реестр,
феерия

Разумеется, если в искомой строке есть слэш (/), его надо заэкранировать обратным слэшем: \/.

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


Комментарии:
Всего комментариев:0
Пожалуйста, не забудьте ознакомиться с правилами оставления комментариев.



Подписаться на комментарии на этой странице

Мы можем выполнить

Другие услуги
Интересная и полезная
информация
НАПИШИТЕ НАМ
Яндекс.Метрика
Номер телефона
© Copyright Все права защищены 2013-2024 Научный консалтинг