EGORR_TOO
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Научите. кто знает, как callback функции функции preg_replace_callback скормить второй аргумент, не полученный в ходе работы функции preg_replace_callback. Подробней... Есть файл со схемой расположения мест туристического автобуса (html таблица). Номера мест обозначены в таблице в виде {1},{2},{3},{4},{5},....{48}. Задача забрать значение внутри скобок, проверить в БД статус места (занято, свободно, бронь, служебное) и заменить на DIV с соответствующим статусу классом CSS. Мне показалось, что наиболее подойдет preg_replace_callback. Родил шаблон замены Код: $pattern ='/(\{)(\d+)(})/'; | Написал функцию для callback Код: global $arr; $arr = array(25,28,30,35,40,48); function Replace($matches, $arr) { if(in_array($matches, $arr)){ return "<div class=\"not_for_sale\">".$matches[2]."</div>"; } } $File = preg_replace_callback($pattern, 'Replace', $File); | Второй аргумент (array) $arr - выборка из БД. Вот с ним возникли проблемы. preg_replace_callback не хочет принимать его, поскольку он не является результатом работы самой функции. На php.net нашёл совет объявить $arr global и тогда всё сработает. Но не сработало. Вариант с create_function() тоже не дал результата. Ругается на отсутствие второго аргумента. Что я делаю не так? |