Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2014, 10:04   #1
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию парсим на php - помогите разобраться с проблемой.

Всем добрый день и с наступающим.
Пытаюсь вырезать текст на странице при помощи preg_replace.

Имеем такую страницу: http://shop.neoncomputers.ru/catalog...ps-pta317.html

и хочу вырезать строки:

При заказе сегодня, товар поступит в пункт выдачи
ул.Димитрова д.112A 09.1.2014

пробую делать так:

Код:
$search = array ('!href="http://kripta032.ru(.*?)"!si','!action="http://kripta032.ru(.*?)"!si','!При заказе.*дачи\n<br>.*201.!si');
	$replace = array ('href="\\1"','action="\\1"','');
	echo preg_replace($search,$replace,$matches[1]);
Первые 2 правила работаею, а вот третье не срабатывает. Не могу понять почему. Проверял его на онлайн сервисах - отмечает как рабочее. Прощу помощи разобраться с моими ошибками.
Armatus вне форума Ответить с цитированием
Старый 03.01.2014, 11:20   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,603
По умолчанию

С регулярками я вам не помогу.. могу дать совет использовать для парсинга либу simple php http://simplehtmldom.sourceforge.net/
Там синтаксис выделения блока очень схож на jquery формат. Просто и быстро получается получить текст/хтмл нужного блока
Gorychev вне форума Ответить с цитированием
Старый 03.01.2014, 12:04   #3
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

Будем пробывать. но вопрос первоначальный открытый =) хотелось бы в нем разобраться =)
Armatus вне форума Ответить с цитированием
Старый 03.01.2014, 13:23   #4
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

еще вопрос в довесок. Пытаюсь удалить блок добавления в карзино по той же ссылке. пишу такую регулярку:

PHP код:
$search = array ('!href="http://kripta032.ru(.*?)"!si','!action="http://kripta032.ru(.*?)"!si','!При заказе.*дачи\n<br>.*201.!si','!<form.*id="addtocart".*>.*</input></form>!si');
    
$replace = array ('href="\\1"','action="\\1"','','');
    echo 
preg_replace($search,$replace,$matches[1]); 
выводит пустое окно, в лог не падают ошибки. Я так понимаю он все вырезал? Как правильно тут составить регулярное выражение?
Armatus вне форума Ответить с цитированием
Старый 03.01.2014, 14:56   #5
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

Собственно с последним парсером разобрался. Я так понял что уменя проблемы с составлением регулярных выражений если встречаются символы новой строки. Как правильно их учитывать в регулярных выражениях на моем первом примере?
Armatus вне форума Ответить с цитированием
Старый 03.01.2014, 15:06   #6
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

Второй вопрос решил. проблема была в кодировках. Код на utf-8 строка на win-1251. Перекодил строку и заработало
Armatus вне форума Ответить с цитированием
Старый 03.01.2014, 17:02   #7
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

новый вопрос назрел.

Имеется вот такой текст с ценой:

Код HTML:
<div style="float:right;text-align:right">
		<div><strong>Цена: </strong><font style="font-weight:bold">
297 руб.</font>
</div>
		<div><div>
    
    </div></div>	
</div>
Сделал такое регулярное выражение:

PHP код:
!<div><strong>Цена: </strong><font style="font-weight:bold">([^руб.</]*)!si 
Где по логике выбирается строка "<div><strong>Цена: </strong><font style="font-weight:bold"> и запоминаем все символы до "руб.</"

Делаем правило замены:

Код HTML:
<div><strong>Цена: </strong><font style="font-weight:bold">123</font>
На выходе получаем


Код HTML:
<div><strong>Цена: </strong><font style="font-weight:bold">123</font>.
</div>
Вопрос? Почему появилас точка? (</font>.) и куда делся "руб."?

Последний раз редактировалось Armatus; 03.01.2014 в 17:07.
Armatus вне форума Ответить с цитированием
Старый 09.01.2014, 10:50   #8
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

Господа подсобите как правильно составить регулярное выражение
Есть строка:
<form action="/index.php" method="post" name="addtocart" id="addtocart">
и строки
<form action="/index.php" method="post" name="addtocart" id="addtocart0">
<form action="/index.php" method="post" name="addtocart" id="addtocart1">
...
<form action="/index.php" method="post" name="addtocart" id="addtocartn">

Соответсвенно n - это число которое не более трех цифр.

для первой строки сделал правило:

!<form action="/index.php" method="post" name="addtocart" id="addtocart">.*<input.*name="Item id"[^>]*></form>!si

Вопрос - как допилить мое правило для остальных строк?

Пробовал вот так, но результат не дало:

!<form action="/index.php" method="post" name="addtocart[^"]*?" id="addtocart">.*<input.*name="Item id"[^>]*></form>!si

Подозреваю синтаксическую ошибку.
Armatus вне форума Ответить с цитированием
Старый 09.01.2014, 11:42   #9
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

а при чем тут name?
eval вне форума Ответить с цитированием
Старый 09.01.2014, 11:55   #10
Armatus
Форумчанин
 
Регистрация: 09.05.2009
Сообщений: 122
По умолчанию

пардон - врожденное косоглазие =) я подразумевал свойствой id в регулярном выражении и мое регулярное выражение не работает:

!<form action="/index.php" method="post" name="addtocart" id="addtocart[^"]*?">.*<input.*name="Item id"[^>]*></form>!si
Armatus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с PHP и checkbox Михаил6289 PHP 5 03.11.2013 18:24
Помогите разобраться с PHP Nykone PHP 13 12.04.2011 09:52
как разобраться с проблемой с Canvas Seran4ek Общие вопросы Delphi 6 19.04.2010 00:28
ПОМОГИТЕ разобраться с проблемой wertev Помощь студентам 1 17.01.2009 11:47