![]() |
|
Модераторы: Aliance, skyboy, MoLeX, ksnk |
![]()
|
|
| 1234ru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 26.8.2007 Репутация: нет Всего: -1 |
Нужно при вызове preg_replace_callback() как-то смочь передать в callback-функцию дополнительный параметр (пусть $x), помимо массива совпадений, Причем $x должен после её работы возвращаться в уже измененном виде.
Глобальной делать $x не годится, т.к. упомянутая preg_replace_callback() будет вызываться, в свою очередь, из функции, а не из глобальной области видимости. (вообще-то, мне кажется, такое сделать никак нельзя, но вдруг я что-то упускаю.. очень было бы хорошо, если можно) Тут: http://forum.vingrad.ru/forum/topic-268822...y1936933/0.html предлагают переделать в класс. Это единственный способ? Это сообщение отредактировал(а) 1234ru - 6.8.2009, 09:26 |
|||
|
||||
| IZ@TOP |
|
||||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 2 Всего: 73 |
Я хотел тоже самое предложить. Но, помимо этого, можно переменную подставить в параметре замены
Например. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
||||
|
|||||
| 1234ru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 26.8.2007 Репутация: нет Всего: -1 |
По-моему, чтобы так можно было делать, имя переменной должно встречаться в обрабатываемом тексте. Откуда оно там появится - как-то непонятно. (хотя, может, я туплю) |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 2 Всего: 73 |
1234ru, я же привел пример. А что значит "имя переменной должно встречаться в обрабатываемом тексте"? Откуда в тексте вообще переменные?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| 1234ru |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 26.8.2007 Репутация: нет Всего: -1 |
Извиняюсь, чё-то я затупил...
Да, действительно так можно. Только надо, чтобы $x была в одинарных кавычках, а не в двойных:
Но у такого подхода есть два недостатка: 1. через модификатор 'e' оказывается медленнее в 3-6 раз, чем через callback-функцию (если надо, могу выложить код, которым тестировал) 2. если в фукнции придется задействовать совпадения дополнительных подмасок (а не только, например, целого текста), то у неё придется менять число аргументов |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: -1 Всего: 12 |
А кто сказал делать глобальной? Сделай ее статичной в функции
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Тексты | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |