Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярка, или substr? 
V
    Опции темы
Just123
Дата 11.3.2012, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Доброго времени, уважаемые.

Подскажите пожалуйста,  есть строки вида:
<h2><span>ТИП</span>НАЗВАНИЕ</h2>

Мне нужно вытащить отсюда только название. 
(в названии могут присутствовать пробелы)

Никак не могу побороть регулярные выражения или может тут уместнее работа со строками?
Как решить проблему, подскажите пожалуйста.

Спасибо, за уделенное время.
PM MAIL   Вверх
Evghenusi
Дата 11.3.2012, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 6
Всего: 15



Код
/<h2><span>[^>]*<\/span>([^>]+)<\/h2>/si
?
PM WWW   Вверх
ksnk
Дата 11.3.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Evghenusi, 
Код

<h2>
<span id="xxx">
    It's
</span>
a trap
</h2>
<p> вавыаы fasdfpfdasd sfasdf asdfsa вафвыав </p>

?


Just123, Какие вообще данные встречаются? Примеры можно привести?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Evghenusi
Дата 11.3.2012, 23:06 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 6
Всего: 15



Цитата(ksnk @  11.3.2012,  22:21 Найти цитируемый пост)
?

ksnk, вы автор темы? что дали с тем и работаю, появятся дополнительные условия, допилю.

Цитата(ksnk @  11.3.2012,  22:21 Найти цитируемый пост)
Примеры можно привести? 

Цитата(Just123 @  11.3.2012,  19:37 Найти цитируемый пост)
<h2><span>ТИП</span>НАЗВАНИЕ</h2>


PM WWW   Вверх
Just123
Дата 12.3.2012, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Вообще, задача состоит в том, чтобы распарсить страницы одного каталога.

Для парсинга я решил воспользоваться библиотекой Simple HTML DOM.

С помощью следующего кода:
Код

$html = file_get_html('http://example.com/catalog.html');


foreach ($html->find('span') as $item_info) {
     $info[] = $item_info->plaintext;

}

$item = array_chunk($info, 4);


Я получил тип, артикул, размер и цену + немного мусорной информации, которую нужно отфильтровать.
Зная артикул, можно получить и фотографии товара т.к. это является своего рода "уникальным ключом" в названии фотографии.
Остается получить название товара.

С помощью следующего кода:

Код

foreach ($html->find('h2') as $item_name) {
     $name[] = $item_name->outertext;

}


Я получаю такие данные:

Цитата

<h2><span>Юбка</span>SILVIAN HEACH</h2><h2><span>Юбка</span>SILVIAN HEACH</h2><h2><span>Юбка</span>SILVIAN HEACH</h2><h2><span>Юбка</span>SILVIAN HEACH</h2><h2><span>Шорты</span>SILVIAN HEACH</h2><h2><span>Блуза</span>SILVIAN HEACH</h2><h2><span>Куртка</span>SILVIAN HEACH</h2><h2><span>Куртка</span>SILVIAN HEACH</h2><h2><span>Топ</span>SILVIAN HEACH</h2><h2><span>Толстовка</span>SILVIAN HEACH</h2><h2><span>Топ</span>SILVIAN HEACH</h2><h2><span>Брюки</span>SILVIAN HEACH</h2><h2><span>Футболка</span>SILVIAN HEACH</h2><h2><span>Блуза</span>SILVIAN HEACH</h2><h2><span>Блуза</span>SILVIAN HEACH</h2><h2><span>Брюки</span>SILVIAN HEACH</h2>



Можно так же получить plaintext:

Цитата

ЮбкаSILVIAN HEACHЮбкаSILVIAN HEACHЮбкаSILVIAN HEACHЮбкаSILVIAN HEACHШортыSILVIAN HEACHБлузаSILVIAN HEACHКурткаSILVIAN HEACHКурткаSILVIAN HEACHТопSILVIAN HEACHТолстовкаSILVIAN HEACHТопSILVIAN HEACHБрюкиSILVIAN HEACHФутболкаSILVIAN HEACHБлузаSILVIAN HEACHБлузаSILVIAN HEACHБрюкиSILVIAN HEACH



Но plaintext я думаю обработать будет сложнее и можно просто вытащить текст который между находиться между тегами </span> и </h2>.

Я раньше никогда не занимался парсингом HTML, да и с регулярками сложности всегда были, поэтому вопросы у меня назрели следующие:
1. Как лучше всего реализовать эту задачу? Мой подход правильный?
2. Как можно сразу все данные вытащить о товаре? В моей реализации разными функциями достигается сбор данных и их(данные) перед записью в файл, нужно правильно скомпоновать, что привносит некоторые сложности.

Благодарю за внимание и очень жду советов. smile

Это сообщение отредактировал(а) Just123 - 13.3.2012, 10:26
PM MAIL   Вверх
Evghenusi
Дата 12.3.2012, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 6
Всего: 15



по поводу РВ 
Код
/<h2><span>([^>]+)<\/span>([^>]+)<\/h2>/si

этот вариант врорде бы справляется, глянуть мона тут, хотя если используется Simple HTML DOM, то на регулярки можно плюнуть)

Just123, советовать ничего не буду, кроме ссылки на "мануал", хотя вы наверно уже посещали его 

Это сообщение отредактировал(а) Evghenusi - 12.3.2012, 13:01
PM WWW   Вверх
Just123
Дата 12.3.2012, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата

этот вариант врорде бы справляется, глянуть мона тут

Да, справляется, спасибо.

Цитата

 хотя если используется Simple HTML DOM, то на регулярки можно плюнуть)

Можно было бы, но он у меня ругается нотисами, при использовании второго аргумента в функции find.

Notice: Trying to get property of non-object in E:\www\localhost\price7style\index.php on line 19

PM MAIL   Вверх
Just123
Дата 13.3.2012, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата(Evghenusi)

хотя если используется Simple HTML DOM, то на регулярки можно плюнуть)

Действительно, подробнее ознакомившись с этой библиотекой, не понадобилось использование регулярных выражений. Спасибо.

P.S. На будущее, если вдруг кому еще пригодиться, вот неплохая инструкция на русском по Simple HTML DOM Parser.

Это сообщение отредактировал(а) Just123 - 13.3.2012, 10:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1325 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.