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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> preg_replace_callback и классы 
V
    Опции темы
Aliance
Дата 18.8.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Не работает функция preg_replace_callback когда вторым ее аргументом нужно вызвать функцию внутри объекта.

Код

class Test {
   function preg($matches) {
       return $matches[0];
   }
}

$Test = new Test();

$test = preg_replace_callback("/test/m", "$Test->preg", $test);



PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 18.8.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



в смысле - нельзя передать метод объекта вместо функции...
попробуй вместо строки "$Test->preg" вот такое выражение: 
array(&$Test, 'preg')
PM MAIL   Вверх
skyboy
Дата 18.8.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



проверил. воркает.
PM MAIL   Вверх
Aliance
Дата 19.8.2008, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



А как сделать тоже внутри класса?
Код

class Test {
   function preg($matches) {
       return $matches[0];
   }

  $this->test = preg_replace_callback("/test/m", "$this->preg", $this->test);
}

Не работает
PM MAIL WWW ICQ Skype   Вверх
americanets
Дата 19.8.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

array('self', 'preg')


Это сообщение отредактировал(а) americanets - 19.8.2008, 10:19


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
gta4kv
Дата 19.8.2008, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

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



Код

self::$full_page = preg_replace_callback
               ( 
                    '#lang\{(.+?)\}#',  // expression
                    create_function
                    ( 
                         '$matches', // output array
                         'return bj::$lang[$matches[1]];' // print ^_^ 
                    ), 
                    self::$full_page 
               );

Я сделал таким образом, и не парился smile
PM MAIL   Вверх
Aliance
Дата 19.8.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



А если функция не в 2 строчки, а в 200?
PM MAIL WWW ICQ Skype   Вверх
gta4kv
Дата 19.8.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

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



А зачем?

Добавлено через 1 минуту и 3 секунды
а вообще вызывайте просто

Код

                         'return otherFUNCTIONHere( $matches[1] )' // print ^_^ 

и там уже хоть стопятьсот строк юзайте.
PM MAIL   Вверх
americanets
Дата 19.8.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Aliance @  19.8.2008,  13:34 Найти цитируемый пост)
А если функция не в 2 строчки, а в 200? 


как говорится , см. выше


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Mal Hack
Дата 19.8.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(gta4kv @  19.8.2008,  11:26 Найти цитируемый пост)
Я сделал таким образом, и не парился smile 

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

Цитата(Aliance @  19.8.2008,  10:55 Найти цитируемый пост)
А как сделать тоже внутри класса?

Точно также, только указатель не на объект даешь, а на this.
PM ICQ   Вверх
gta4kv
Дата 19.8.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


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

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



Код

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

Нефиг было его советовать, пару недель назад smile
PM MAIL   Вверх
Mal Hack
Дата 19.8.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Цитата(gta4kv @  19.8.2008,  14:14 Найти цитируемый пост)
Нефиг было его советовать, пару недель назад smile 

Кто это его посоветовал? Линк в студию.
PM ICQ   Вверх
Aliance
Дата 11.10.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Если функция находиться в текущем классе (т.е. ее вызов происходит так: $this->func()), то совет от americanets работает.
Но что делать, если вызов функции должен происходить так: $this->subclass->func()?
PM MAIL WWW ICQ Skype   Вверх
Sunvas
Дата 12.10.2008, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Код

array(&$this->subclass,'func');



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Aliance
Дата 13.10.2008, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



спасибо. помогло. вопрос решен, кто помог +)
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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