Проблема с preg_replace.. не хочет работать.

bora

Guest
Проблема с preg_replace.. не хочет работать.

Значит $MCHCHK очень большой текст… в котором встречаются строки указанные в паттерне, но $gcdout имеет разные значения которые забиты в массив.

Мне надо чтобы он переименовывал все эти строки на циферки 1..9999 по порядку..
А оно нифига не работает… он просто из всего текста $MCHCHK делает пустое место. Заместь того чтобы заменять нужные вещи.

$chunkZ это числа типа от 0 до $chunkZ++….

Если к примеру это $gcdout[$chunkZ] поменять на это $gcdout[44] то он все сделает правильно… вот мне и непонятно потому что $chunkZ в определено время тоже будет 44..


Код:
$MCHCHK = preg_replace("/blablabla" . $gcdout[$chunkZ] . "blablabla/isU", $chunkZ , $MCHCHK);
Если сделать так тоже будет работать но куда дольше чем так как я хочу.

Код:
$jfkro[] = "/blablabla" . $gcdout[$chunkZ] . "blablabla/isU";
$MCHCHK = preg_replace($jfkro, $chunkZ , $MCHCHK);
Тут либо я дурак либо я не знаю… :)
 

uchenik

Новичок
В функцию preg_replace() необходимо передавать МАССИВ ГОТОВЫХ ШАБЛОНОВ. Тоесть ты должен сгенерировать все возможные шаблоны в зависимости от $gcdout[$chunkZ] и забить их в массив, например $pattern.

Лишь затем вызываешь функцию:

$MCHCHK = preg_replace($pattern, $chunkZ , $MCHCHK);

Подробнее, на русском и с примерами - http://www.ru.php.net/preg_replace
 

bora

Guest
Все я нашел ошибку… у меня в одном из значений $gcdout было вот это «Asia/Pacific Region» а именно этот символ «/»… вот он и сдурел.

То как ты говоришь хорошо но это двойная работа для процессора у меня загружаются данные из файла… 5 мег потом лишнее отрубается по моему шаблону и остаток файла идет в дальнейшую обработку. Я попробовал и он задумался на секунд 20 а так как я делаю всего 1 секунду. :)
 

uchenik

Новичок
ОДИН вызов
PHP:
$text = preg_replace($pattern, $replace, $text)
,
где $pattern - массив шаблонов, а $replace - массив замен, ВСЕГДА будет работать быстрее вызова этой функции в цикле, как это делаешь ты.

И чем больше текст и больше шаблонов - тем быстрее будет работать.
 
Сверху