![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| kanaris |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.2.2008 Репутация: -1 Всего: -1 |
Есть след. задача. Из базы данных извлекается строка вида 'файл скачан $count раз' (это к примеру). Есть ли в пхп встроенная функция, которая заменит вхождение $count в строке на реальное значение этой переменной?
Должно получиться что-то типа
зы. регулярные выражения не предлагать, интересует только встроенная функция. ззы. если такое существует, то это мега-офигенно для меня (делаю шаблонизатор) Это сообщение отредактировал(а) kanaris - 13.3.2008, 14:07 |
|||
|
||||
| vasac |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1060 Регистрация: 4.5.2006 Репутация: 8 Всего: 36 |
А функции работы с регулярными выражениями не встроенные?
str_replace может быть поможет? Или нужна именно функция, которая заменяет "count" на $count? |
|||
|
||||
| kanaris |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.2.2008 Репутация: -1 Всего: -1 |
Нужна именно функция, которая заменяет вообще переменные в строке, будь то $count, $count[sdfsdf], $count[123], $count->variable, подобно, как заменяются переменные в строках с двойными кавычками:
Вот только строка, в которой производится замена, извлекается из БД, и должна парситься такой функцией |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Не нашел такой ф-ции.
Либо работа со строками либо eval:
Хотя с ф-цией это я не прав.. Область видимости. Это сообщение отредактировал(а) flashaa - 13.3.2008, 14:32 |
|||
|
||||
| kanaris |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.2.2008 Репутация: -1 Всего: -1 |
вот человек предложил функцию. вроде бы офигенно. но на самом деле полная фигня. 1) область видимости (нужно глобализировать кучу переменных, ужас) 2) если в существующей строке уже были кавычки, то строка не обработается eval()'ом. 3) если совершенствовать эту конструкцию, то получится полная фигня, которая пашет в 10 раз медленнее той, что у меня уже существует, и баговее во стока же раз Я сам искал в документации по пхп, вроде ничего подобного и нету. или может быть плохо искал. Это сообщение отредактировал(а) kanaris - 13.3.2008, 15:22 |
|||
|
||||
| Canarat |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 11.3.2008 Где: Каспий Репутация: 5 Всего: 5 |
kanaris, вообще мне кажется что этот подход яйца выеденного не стоит. Для чего тогда sprintf, printf и вообще технология placeholder'ов? А функция, которую написал flashaa, будет работать в таком виде:
Добавлено через 11 минут и 30 секунд Любые подобные операции есть изврат над самой сутью работы со строками в РНР |
|||
|
||||
| kanaris |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 16.2.2008 Репутация: -1 Всего: -1 |
Canarat, а если в строке будут кавычки? ничего не получится. И еще, важно, чтобы эта функция не просто работала, а чтобы она быстро работала, поскольку принимает участие в рекурсивной сборке страницы.
Чтобы не вводить никого в заблуждение, привожу полный пример скрипта, который парсит страницу (пока со старым вариантом). Если все-таки такая функция существует, парситься будет значительно быстрее и шаблоны будут намного понятнее программеру.
Этот скрипт парсит страницу, и выводит это:
Здесь пока в роли такой функции выступают эти строки:
кстати, как сама идея шаблонизатора? |
||||||
|
|||||||
| Canarat |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 11.3.2008 Где: Каспий Репутация: 5 Всего: 5 |
kanaris,
Ничего сверх стандартной концепции шаблонизаторов
И str_replace отключен? |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |