U.Helper

23 Марта 2010 22:52
Главная » Статьи » Кодинг » U.ServerSide — используем серверную часть по-максимуму.
Intro
Возможность генерировать содержимое на сервере - отличная возможность, которой мы, к сожалению, практически лишены. Шаблонизация лишь малия толика того, что возможно сделать, имея полный доступ к серверу. Однако ситуацию можно улучшить, используя вставки Юкоз-кода.

Функции:

substr

Code
[php]<? substr($STRING$, start, length) ?>
Возвращает подстроку строки $STRING$, начиная с позиции start длиной length символов либо до конца строки, если параметр не задан.
Если параметр start отрицателен, то отсчет ведется с конца.

strpos

Code
[php]<? strpos($STRING$, $SUBSTRING$) ?>
Возвращает позицию первого вхождения подстроки $SUBSTRING$ в строку $STRING$.

strrpos

Code
[php]<? strrpos($STRING$, $SUBSTRING$) ?>
Возвращает позицию последнего вхождения подстроки $SUBSTRING$ в строку $STRING$.

len

Code
[php]<? len($STRING$) ?>
Возвращает длину строки $STRING$.

Операции:

Code
[php]<? $X$ + $Y$ ?> // Сложение аргументов.
<? $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$ ?> // Логическое отрицание.

Задание чисел возможно как в десятичной, так и шестнадцатеричной, и двоичной формах.

Code
[php]<? 0xFF ?>
Запись числа в шестнадцатеричной форме. Вернет 255.
Code
[php]<? 0b11 ?>
Запись числа в двоичной форме. Вернет 3.
Восьмеричная форма не поддерживается.

Неприятности:
К сожалению, не все так просто. Опытным путем было выяснено, что strpos ищет только в блоке из последних первых 1000 символов, возвращая позицию подстроки внутри блока. Т.е. в независимости от количества символов, возвращаемое значение всегда будет от -1 до 999 (-1, если подстрока не найдена в последней первой тысяче символов).

Так же в виду осутствия циклов не представляется возможным провести бесконечное преобразование строки. Более того, с каждым новым действием над обрабатываемой строкой количество кода будет многократно увеличиваться.

Демо-страничка статьи.

7002 просмотра | Рейтинг: ← 33 →
Категория: Кодинг | Добавил: Бармалей (23 Марта 2010) | Автор: B@rmaley.e><e | Теги: php, len, server side, strpos, substr, uCoz

32 комментария

0
Bog4ev[Материал] 14:59, 24 Марта 2010
Спасибо, буду знать (хорошая статья)
Цитировать
0
dasasa[Материал] 20:04, 24 Марта 2010
Спасибо за информацию! Очень полезно)
Цитировать
Сайт
0
kanat07[Материал] 20:40, 24 Марта 2010
блин Бармалей, ты только начало обяснил которых многие знают.
объясни более сложные действия, т.е в одном действии несколько substr, strpos и т.д

спасибо)

Цитировать
Сайт
0
Бармалей[Материал] 21:08, 24 Марта 2010
Для этого нужна только голова и ничего больше. А свою я не отдам.

Если многие знали про баг с strpos или про возможность записи чисел в двоичном формате, то я очень удивлен.

Цитировать
Сайт
0
kanat07[Материал] 22:41, 24 Марта 2010
>>Если многие знали про баг с strpos или про возможность записи чисел в двоичном формате, то я очень удивл
кроме этих.

ну сделайте примеры о том что я просил.

Цитировать
Сайт
0
lo[Материал] 20:08, 19 Июня 2011
да тот кто сам с этим гемором сталкивался тот знает, я вот оптимизировал свой сайт по жестким меркам хтмл убирал из стандартного кода юкоза кучи ошибок и всякого мусора и всеравно все убрать неполучаеться из-за этого бага, посути юкоз вообще редкое говно неследят за кодом вообще. вот смотрите код )) cs.killo-w.ru cool
Цитировать
0
Vanofuture[Материал] 21:33, 24 Марта 2010
Хорошая статья. Я знал про всё, кроме возможности задания чисел в других формах. Вот только где может понадобится такой вариант, возможно ли для него практическое применение?
Цитировать
Сайт
0
Бармалей[Материал] 22:13, 24 Марта 2010
Репрезентация чисел в других форматах существует исключительно для удобства программиста. Внутри самой программы разницы между 0xFF и 255 нет.

P.S. Шестнадцатеричная форма короче десятичной, начиная с 1099511627775. biggrin

Цитировать
Сайт
0
dasasa[Материал] 08:54, 25 Марта 2010
А можно ли на сервере сгенерировать случайные цифры? smile
Цитировать
Сайт
0
Бармалей[Материал] 09:51, 25 Марта 2010
Нет. Но можно комбинацией переменных и операторов получить псевдо-случайное число (псевдо-псевдо-случайное).
Цитировать
Сайт
0
dasasa[Материал] 10:20, 25 Марта 2010
Хм... расскажи пожалуйста поподробнее smile

Я хочу чтобы генерировалась капча, а точнее значение tm (чтобы не было ошибки "Неправильный код безопасности") на не динамической странице uCoz.

Цитировать
Сайт
0
Бармалей[Материал] 11:37, 25 Марта 2010
На нединамических страницах юкоз вставки (<? somethings ?>) не работают.
Цитировать
Сайт
0
dasasa[Материал] 12:28, 25 Марта 2010
Хм... у меня в принципе есть вариант использовать на динамической странице в new _uWnd не xml файл, а код, значит должно получится. smile

Расскажи пожалуйста поподробнее:

Quote
можно комбинацией переменных и операторов получить псевдо-случайное число (псевдо-псевдо-случайное)

И если не сложно пример wink
Цитировать
Сайт
0
Бармалей[Материал] 13:39, 26 Марта 2010
Что-то вроде
Code
[php]<? $USER_REG_DAYS$ | $DAY$ ^ $USER_ID$ & $GROUP_ID$ * $HOUR$ | $MONTH$ & $GROUP_ID$ ^ $USER_ID$ ?>

Добавить побольше постоянно меняющихся параметров, чтобы было более похоже на случайное число.
Цитировать
Сайт
0
dasasa[Материал] 11:38, 27 Марта 2010
Спасибо! Сейчас буду подставлять smile
Цитировать
Сайт
0
mob_dp[Материал] 12:08, 25 Марта 2010
За труд по напсанию спасибо, однако ничего нового для себя не открыл.
Хотелось бы примеры с использованием побитовых операций.
Цитировать
Сайт
0
Бармалей[Материал] 14:13, 25 Марта 2010
За побитовыми операциями — в гугль. Они одинаковы для всех языков.
Цитировать
Сайт
0
uWeb[Материал] 22:42, 25 Марта 2010
strpos bug killed
Цитировать
Сайт
0
Владимир[Материал] 19:18, 27 Марта 2010
Атлична, атлична! Про первые три функции не знал, спасибо!
Цитировать
E-MailСайт
0
Bogggdan[Материал] 20:42, 29 Марта 2010
Пешы есчо!! smile
Цитировать
0
lo[Материал] 23:44, 07 Мая 2010
В редакторе шаблонов на юкозе все это и так описано wink с немного меньшим разъяснением, но понятно
Цитировать
0
Бармалей[Материал] 11:02, 08 Мая 2010
Все это? Где вы там видели описание функции len, например? Или возможности обработки контента на стороне сервера с помощью <? ... ?>? Или про отрицательные аргументы substr?
Цитировать
Сайт
0
kanat07[Материал] 12:26, 16 Мая 2010
интересно в каком именно редакторе шаблонов?
Цитировать
Сайт
0
Hak[Материал] 16:48, 19 Августа 2010
Сделал я вот так

<? substr('$RFILE_DIRECT_URL$', '13', '20') ?>

Но мне выводит не то что внутри $RFILE_DIRECT_URL$ а сокращение самого $RFILE_DIRECT_URL$, вот так : _URL$ ((((((

Цитировать
0
uWeb[Материал] 00:49, 20 Августа 2010
<?substr($RFILE_DIRECT_URL$,13, 20)?>
Цитировать
0
DVKIP[Материал] 00:25, 28 Августа 2010
Может кто знает как обрезать ссылку до 3-го слеша? Если это конечно возможно.. просто длина сайта каждый раз меняется
Пример
Code
$kod$=http://test.ru/test/1/ а после обработки становиться http://test.ru/

У кого какие идей?

Цитировать
0
uWeb[Материал] 15:52, 07 Декабря 2010
MF.
Цитировать
0
d1mS[Материал] 16:00, 15 Сентября 2010
Почему в статье описаны не все функции?
Цитировать
0
Бармалей[Материал] 00:18, 16 Сентября 2010
Потому что теперь подробную справку можно найти в админке.
Цитировать
0
VoVcHiK1009[Материал] 15:11, 19 Февраля 2011
эм... ошибка однако "осутствия"
Цитировать
0
NoName74[Материал] 17:35, 14 Мая 2011
Спасибо братцы! Допёрло как обрезать текст до нужной длины ^_^
Цитировать
Сайт
0
d1mS[Материал] 13:47, 02 Июля 2011
<?substr('http://test.ru/test/1/',0,strpos(substr('http://test.ru/test/1/',0,7),'/'))?>
Цитировать
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

© U.Helper 2007-2024 Используются технологии uCoz