поиск в строке из массива

  • Автор темы Автор темы Marquis
  • Дата начала Дата начала

Marquis

Новичок
поиск в строке из массива

Задача следующая.
Необходимо в строке $str найти совпадения со значениями из массива $array
Делается это для парсера логов, поэтому на данную операцию нужно выделять минимум ресурсов. Сейчас ароверка наличия производится через регулярки, но т.к. тесты показали "торможение" процесса на этой операции вынужден искать альтернативные пути решения задачи.
Первой что пришло в голову это модификация стандартной функции strpos, вопрос только в том, как правильнее это сделать.

Буду благодарен за любые советы.
 
То есть в массиве $array лежат значения, которые, необходимо отыскать в строке $str, правильно?
А если пройтись по массиве, и искать каждый элемент в строке? Как бы там ни было, а других путей, кроме регулярок и поиска с проходом по массиву вроде бы и нет...
 
А ты сделай вариант с проходом по массиву и поиском совпадений, и протестируй на больших массивах.
И сравни ее работу с работой поиска по регулярке.

Уверен, разница в скорости будет ощутимой, и не в пользу регулярки.
 
Разница действительно есть, вышло процентов эдак на 25-30 выигрыша по времени при использовании проха по массиву. Так не хотел верить в этот результат, теперь работы на всю ночь. :D
 
Делается это для парсера логов, поэтому на данную операцию нужно выделять минимум ресурсов.
странно.
а на мой взгляд ровно наоборот - уж как раз парсеру-то логов никто не мешает хоть час работать...
 
уж как раз парсеру-то логов никто не мешает хоть час работать..
Я с этим полностью согласен, собсна его работа и не останавливается. Просто когда это все дело работает на компьютере который не мощнее калькулятора приходится извращаться.
 
Фанат
Вопрос решился, как всегда ошибка была обнаружена там, где ее совсем не ждеш. Эта самая регулярка генерировалась perl'ом и при некоторых условиях сжирал кучу лишней оп. памяти. В следствии чего и происходили тормоза.
Рано на форум стал постить, ошибка как всегда оказалась в своей же голове.
 
Сверху