Возможность генерировать содержимое на сервере - отличная возможность, которой мы, к сожалению, практически лишены. Шаблонизация лишь малия толика того, что возможно сделать, имея полный доступ к серверу. Однако ситуацию можно улучшить, используя вставки Юкоз-кода.
Функции:
substr
Если параметр start отрицателен, то отсчет ведется с конца.
strpos
strrpos
len
Операции:
<? $X$ - $Y$ ?> // Разность аргументов.
<? $X$ * $Y$ ?> // Перемножение аргументов.
<? $X$ / $Y$ ?> // Деление аргументов. В случае деления на 0 возвращает inf.
<? $X$ % $Y$ ?> // Возвращает остаток от деления.
<? $X$ = $Y$ ?> // Сравнение аргументов.
<? $X$ != $Y$ ?> // Сравнение аргументов на неравность.
<? $X$ & $Y$ ?> // Побитовое И.
<? $X$ | $Y$ ?> // Побитовое ИЛИ.
<? $X$ ^ $Y$ ?> // Побитовое XOR.
<? ~$X$ ?> // Побитовая инверсия.
<? $X$ && $Y$ ?> // Логическое И.
<? $X$ || $Y$ ?> // Логическое ИЛИ.
<? !$X$ ?> // Логическое отрицание.
Задание чисел возможно как в десятичной, так и шестнадцатеричной, и двоичной формах.
Восьмеричная форма не поддерживается.
Неприятности:
К сожалению, не все так просто. Опытным путем было выяснено, что strpos ищет только в блоке из последних первых 1000 символов, возвращая позицию подстроки внутри блока. Т.е. в независимости от количества символов, возвращаемое значение всегда будет от -1 до 999 (-1, если подстрока не найдена в последней первой тысяче символов).
Так же в виду осутствия циклов не представляется возможным провести бесконечное преобразование строки. Более того, с каждым новым действием над обрабатываемой строкой количество кода будет многократно увеличиваться.