Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> preg_replace, Использование функции preg_replace 
V
    Опции темы
Aver78
Дата 21.4.2013, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Есть такое выражение
Код

 $tmp=preg_replace( "`{(.*?)}`" , my_func("$1"), $data);


Если $1 использовать напрямую, то все работает корректо, $1 заменяется на первый кусок шаблона. Но в любой функции оно воспринимается как простой текст. Никак не могу это побороть. Пробовал уже по всякому разному, даже через eval.
PM MAIL   Вверх
Sanchezzz
Дата 21.4.2013, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Через заглушку.
Код

$id = array();
preg_replace( "/`{(.*?)}`/e" , \$id[]='\\1' , $data); // модификатор e (eval) обязательно 
var_dump($id);

Но лучше это сделать через 
preg_replace_callback
Код

preg_replace_callback("/`{(.*?)}`/i", function($m) {
 
},$data);



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aver78
Дата 22.4.2013, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



preg_replace_callback не желателен по некоторым причинам. А вот с примером я не совсем понял. Там есть присваивание массиву, но мне нужно не это, а передача а значения в свою функцию. Если это критично, хотя едва ли, являющуюся  методом класса. Если несложно приведите пример непосредственно с функцией.

Это сообщение отредактировал(а) Aver78 - 22.4.2013, 00:06
PM MAIL   Вверх
Aver78
Дата 22.4.2013, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Все, разобрался, спасибо, пришлось залезть в документацию по модифиаторам регулярных выражений.
Код

preg_replace( "/`{(.*?)}`/e" , \$id[]='\\1' , $data); // модификатор e (eval) обязательно 

Поленился проверять, но судя по всему в итаком виде он работать не будет, правильно так:
Код

preg_replace( "/`{(.*?)}`/e" , "\$id[]='\\1'" , $data); // модификатор e (eval) обязательно
 

Это сообщение отредактировал(а) Aver78 - 22.4.2013, 01:37
PM MAIL   Вверх
Aver78
Дата 22.4.2013, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Пометка что - все.
PM MAIL   Вверх
Sanchezzz
Дата 22.4.2013, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



Второй вариант тоже сработает модификатор eval стоит а все что в replace " " зоне все eval


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
skyboy
Дата 22.4.2013, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Aver78 @  21.4.2013,  23:04 Найти цитируемый пост)
preg_replace_callback не желателен по некоторым причинам
по каким это? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0744 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.