Роберт
Аналитик
Callback с параметрами...
Можно ли в preg_replace_callback для калбаковской функции передать ещё и какой-то свой параметр?
Раньше использовал такой вариант:
Но похоже что create_function захватывает память и освобождает её лишь после отработки всего скрипта. Просто я попытался дать этому выражению обработать списочек из 500 тысячь маленьких статей (от 10 до 100 слов) , и в виндоуском Диспетчере задач увидел как обьём использованной памяти за пару минут достиг двух гигабайт , после чего виндоус ругнулся и используемая память после этого обвалилась до стандартных 250Мб. Причём за это время было обработано всего около 200 статей (он открывает файл , делает изменения и сохраняет его) , а после обвала программа продолжала якобы работать (браузер всё также ждал результат , Апачи занимал под 90-90% процессорного времени) , но никакие изменения уже не делались...
По этому понял что create_function при больших обьёмах лучше не запускать (так как он не освобождает память после отработки) , и решил вызывать из preg_replace_callback обычную функцию... Но проблема в том что в эту функцию мне ещё необходимо передать значение $МойПараметр. Можно ли его как-то передать?
Можно конечно обьявить эту переменную глобальной , и пользоваться из вызываемой функции. Но мне кажется это не очень красивым способом решения , так как и сам preg_replace_callback находится в фунции...
Можно явно передать:
Но у меня огромное количестов захватов в регулярном авражении , и не хочется влеплять ручками все от \\1 до \\75.
Может всё-таки можно как-то добавить к функции Pereproverka свой дополнительный параметр?
Можно ли в preg_replace_callback для калбаковской функции передать ещё и какой-то свой параметр?
Раньше использовал такой вариант:
PHP:
return preg_replace_callback($РегВыражение,create_function('$Результат','return ........'.$МойПараметр.'.......'),$Статья);
По этому понял что create_function при больших обьёмах лучше не запускать (так как он не освобождает память после отработки) , и решил вызывать из preg_replace_callback обычную функцию... Но проблема в том что в эту функцию мне ещё необходимо передать значение $МойПараметр. Можно ли его как-то передать?
Можно конечно обьявить эту переменную глобальной , и пользоваться из вызываемой функции. Но мне кажется это не очень красивым способом решения , так как и сам preg_replace_callback находится в фунции...
Можно явно передать:
PHP:
return preg_replace_callback($РегВыражение,"Pereproverka('$МойПараметр','\\1','\\2','\\3'...'\\75')",$Статья);
Может всё-таки можно как-то добавить к функции Pereproverka свой дополнительный параметр?


