| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Регулярка |
| Автор: Just123 11.3.2012, 19:37 |
| Доброго времени, уважаемые. Подскажите пожалуйста, есть строки вида: <h2><span>ТИП</span>НАЗВАНИЕ</h2> Мне нужно вытащить отсюда только название. (в названии могут присутствовать пробелы) Никак не могу побороть регулярные выражения или может тут уместнее работа со строками? Как решить проблему, подскажите пожалуйста. Спасибо, за уделенное время. |
| Автор: Evghenusi 11.3.2012, 22:05 | ||
|
| Автор: ksnk 11.3.2012, 22:21 | ||
Evghenusi,
? Just123, Какие вообще данные встречаются? Примеры можно привести? |
| Автор: Evghenusi 11.3.2012, 23:06 |
ksnk, вы автор темы? что дали с тем и работаю, появятся дополнительные условия, допилю. |
| Автор: Just123 12.3.2012, 12:34 | ||||||||
| Вообще, задача состоит в том, чтобы распарсить страницы одного каталога. Для парсинга я решил воспользоваться библиотекой http://simplehtmldom.sourceforge.net/manual.htm. С помощью следующего кода:
Я получил тип, артикул, размер и цену + немного мусорной информации, которую нужно отфильтровать. Зная артикул, можно получить и фотографии товара т.к. это является своего рода "уникальным ключом" в названии фотографии. Остается получить название товара. С помощью следующего кода:
Я получаю такие данные:
Можно так же получить plaintext:
Но plaintext я думаю обработать будет сложнее и можно просто вытащить текст который между находиться между тегами </span> и </h2>. Я раньше никогда не занимался парсингом HTML, да и с регулярками сложности всегда были, поэтому вопросы у меня назрели следующие: 1. Как лучше всего реализовать эту задачу? Мой подход правильный? 2. Как можно сразу все данные вытащить о товаре? В моей реализации разными функциями достигается сбор данных и их(данные) перед записью в файл, нужно правильно скомпоновать, что привносит некоторые сложности. Благодарю за внимание и очень жду советов. |
| Автор: Evghenusi 12.3.2012, 12:56 | ||
по поводу РВ
этот вариант врорде бы справляется, глянуть мона http://www.regexpr.ru/?pattern=%2F%3Ch2%3E%3Cspan%3E%28%5B%5E%3E%5D%2B%29%3C%5C%2Fspan%3E%28%5B%5E%3E%5D%2B%29%3C%5C%2Fh2%3E%2Fsi&subject=%3Ch2%3E%3Cspan%3E%DE%E1%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%DE%E1%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%DE%E1%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%DE%E1%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%D8%EE%F0%F2%FB%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%C1%EB%F3%E7%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%CA%F3%F0%F2%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%CA%F3%F0%F2%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%D2%EE%EF%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%D2%EE%EB%F1%F2%EE%E2%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%D2%EE%EF%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%C1%F0%FE%EA%E8%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%D4%F3%F2%E1%EE%EB%EA%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%C1%EB%F3%E7%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%C1%EB%F3%E7%E0%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E%3Ch2%3E%3Cspan%3E%C1%F0%FE%EA%E8%3C%2Fspan%3ESILVIAN+HEACH%3C%2Fh2%3E, хотя если используется Simple HTML DOM, то на регулярки можно плюнуть) Just123, советовать ничего не буду, кроме ссылки на http://simplehtmldom.sourceforge.net/manual.htm, хотя вы наверно уже посещали его |
| Автор: Just123 12.3.2012, 13:09 | ||||
Да, справляется, спасибо.
Можно было бы, но он у меня ругается нотисами, при использовании второго аргумента в функции find. Notice: Trying to get property of non-object in E:\www\localhost\price7style\index.php on line 19 |
| Автор: Just123 13.3.2012, 10:25 | ||
Действительно, подробнее ознакомившись с этой библиотекой, не понадобилось использование регулярных выражений. Спасибо. P.S. На будущее, если вдруг кому еще пригодиться, http://xdan.ru/Uchimsya-parsit-saity-s-bibliotekoi-PHP-Simple-HTML-DOM-Parser.html. |