Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скачать и разобрать файл
 
 автор: webzz   (02.03.2008 в 17:59)   письмо автору
 
 

добрый день..

Подскажите как сделать следующее:

Необходимо загружать страницу из интернета, которая представляет собой страницу со строками следующего вида:<p>1. <b>0-58710-1</b> [ RELIANCE ELECTRIC ] 1 TERMINAL BOARD - <noindex><a href="бла-бла-бла" title="бла-бла-бла">Запросить</a></noindex></p>


нужно выбрать информацию из всех таких строк помесщать их в дб,а именно: между тегом <b></b> - name, то что в квадратных скобках - producer, оставшееся до тега <noindex> - desciption..как организовать цикл по перебору и загрузки в бд..

Спасибо

   
 
 автор: webzz   (02.03.2008 в 18:42)   письмо автору
 
   для: webzz   (02.03.2008 в 17:59)
 

preg_match("/<p>.*<b>(.*?)<\/b>(.*?)<noindex>.*<\/p>/Uis",$t,$a);

данное выражение распарсивает строчку исходную, в массиве нужные значения..

как загружать страницы наилучшим образом через curl или file_get_contents..необходимо в общем в цикле загружать страницы, выбирать в цикле все значения и класть в бд..а страниц много..нужен самый быстрый и не ресурсоемкий способ потому что скрипт будет запускаться на хостинге..

если возможно пример цикла перебора и выбора значений..

   
 
 автор: webzz   (02.03.2008 в 21:43)   письмо автору
 
   для: webzz   (02.03.2008 в 18:42)
 

да блин..еще и регулярное выражение составлено не правильно..

   
 
 автор: webzz   (02.03.2008 в 23:23)   письмо автору
 
   для: webzz   (02.03.2008 в 21:43)
 


@error_reporting(E_ALL ^ E_NOTICE);
@ini_set('display_errors', true);

@ob_start(); 
ini_set(max_execution_time, 0);
ini_set(memory_limit, 256); 

$last = 50441; 

for ($i=1; $i<=$last; $i++) {

$Timer->start();    
    
$file = "http://www.site.ru/l-$i.html";     

    $f = fopen("$file", "r");
       
       while (!feof ($f)) {   
            $st=fgets($f);
            preg_match("/<p>(.*?)<b>(.*?)<\/b>(.*?) - <noindex>.*<\/p>/Uis",$st,$a); 
/*запись в базу данных*/
        }
echo "Время выполнения скрипта для $i страницы ".$Timer->stop()." секунд";        
fclose($f);
}


пока получился вот такой вот цикл..подскажите как его можно модифицировать в сторону большего увеличения скорости..а также приведения регулярного выражения к правильному формату,а именно необходимо выбирать только данные между тегами <b></b>, то что находится в квадратных скобках и от закрывающейся квадратной скобки до тире

   
 
 автор: Agronom   (05.03.2008 в 14:23)   письмо автору
 
   для: webzz   (02.03.2008 в 23:23)
 

в данном случае думаю разумно загрузить фаил на сервер.
потом читать его построчно.
также у вас в цикле while каждый раз идет обращение к базе данных и запись в неё, думаю лучше формировать строку, предположим для каждого файла $t .= "($a[1],$a[2],$a[3]),"; потом вставлять её в запрос на запись в бд

   
 
 автор: Agronom   (05.03.2008 в 14:39)   письмо автору
 
   для: Agronom   (05.03.2008 в 14:23)
 

А несчет регулярного можно попробовать такой вид:
preg_match("/^(?imsx-imsx:.*?)<b>(.*?)<\/b>\s\[\s(.*?)\s\]\s(.*?)\s-(?imsx-imsx:.*)$/Uis",$st,$a);

   
 
 автор: webzz   (05.03.2008 в 23:36)   письмо автору
 
   для: Agronom   (05.03.2008 в 14:39)
 

за регулярное выражение спасибо..подходит идеально..остальное так и делается

   
 
 автор: Agronom   (05.03.2008 в 23:55)   письмо автору
 
   для: webzz   (05.03.2008 в 23:36)
 

только я там переборщил ?imsx-imsx: , достаточно только ?:

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования