- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть файлик прайс.
Беру составляю регулярку:
preg_match_all("@<td class=xl83 width=617 style='width:463pt'>.*?</td>(.*?)<td height=21 class=xl82 style='height:16\.35pt'> </td>@smi",$pricemass,$tmpx);
Опа... из 63 строк видет только 2.
Ладно думаю, проверю в notepad++
Проверяю. Он находит все 63.
Это как называется?! Куда копать? :)
---------- Добавлено 14.05.2012 в 20:54 ----------
Главное удаляю тот текст который он нашёл. Он бац, находит следующий и опять тормозит, и так каждый руками удаляешь и только потом он его находит.
попробуй
U (PCRE_UNGREEDY)
или я формат файла неправильно себе представляю?
а что такое @ в начале? насколько я помню регулярка выглядит так "/(.*?)/i"
а что такое @ в начале? насколько я помню регулярка выглядит так "/(.*?)/i"
Мануалы почитайте.
---------- Добавлено 14.05.2012 в 21:22 ----------
попробуй
U (PCRE_UNGREEDY)
или я формат файла неправильно себе представляю?
Дык у меня же ?. Какая разница? Хоть его убрать и поставить U толку нету.
---------- Добавлено 14.05.2012 в 21:26 ----------
Если использовать .* вместо .*? то просто до конца берёт данные т.е. все блоки.
Я не понимаю почему это работает в блокноте, а пхп начинается выёживаться.
Есть файлик прайс.
Беру составляю регулярку:
preg_match_all("@<td class=xl83 width=617 style='width:463pt'>.*?</td>(.*?)<td height=21 class=xl82 style='height:16\.35pt'> </td>@smi",$pricemass,$tmpx);
Опа... из 63 строк видет только 2.
Ладно думаю, проверю в notepad++
Проверяю. Он находит все 63.
Это как называется?! Куда копать? :)
---------- Добавлено 14.05.2012 в 20:54 ----------
Главное удаляю тот текст который он нашёл. Он бац, находит следующий и опять тормозит, и так каждый руками удаляешь и только потом он его находит.
Слеш забыли поставить <\/td>
Слеш забыли поставить <\/td>
Посмотрите какой я оператор использую. Мне не надо это экранировать.
Дык у меня же ?. Какая разница? Хоть его убрать и поставить U толку нету.
точно. тупанул.
давай тогда кусок текста, бум пробовать :)
ПС. я бы аттрибуты в регулярке упростил - не указывал все.
может стоит попробывать уменьшить регулярку, возможно не стоит так точно прописывать окончание? Или вам вся строка нужна и вы обрабатываете нулевой масив?
И все-таки очень похоже на жадность. Смотреть подробнее лень, покопай в эту сторону.
http://yourcommentit.ru/price2.html
Можете прямо file_get_contents отудова. Я даже упростил код и сделал замену в блокноте. Новая регулярка:
preg_match_all("@STARTPARS(.*?)MEZAG@smi",$pricemass,$tmpx);
Результат тот же :D
Даже смешно. У меня такое подозрение, что дело в кодировке т.к. файл напрямую из экселя.
---------- Добавлено 14.05.2012 в 21:45 ----------
И все-таки очень похоже на жадность. Смотреть подробнее лень, покопай в эту сторону.
Да я уже 3-и часа копаю. Не жадность это.
---------- Добавлено 14.05.2012 в 22:20 ----------
Всё фантастика закончилась. На этих параметрах.
[Pcre]
;PCRE library backtracking limit.
pcre.backtrack_limit=10000000
;PCRE library recursion limit.
;Please note that if you set this value to a high number you may consume all
;the available process stack and eventually crash PHP (due to reaching the
;stack size limit imposed by the Operating System).
pcre.recursion_limit=10000000
а у меня так вышло:
preg_match_all('#<tr[^>]*>\s*<td[^>]*>(.*)</td>\s*<td[^>]*>(.*)</td>\s*<td[^>]*>(.*)</td>\s*<td[^>]*>(.*)</td>\s*<td[^>]*>(.*)</td>\s*<td[^>]*>(.*)</td>\s*<td[^>]*>(.*)</td>\s*</tr>#misU', $data, $matches, PREG_SET_ORDER);
file_put_contents('out.txt', print_r($matches, true));