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

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

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

 

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

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

тема: Вытащить записи со страницы-словаря
 
 автор: kran   (18.10.2005 в 15:54)   письмо автору
 
 

Здравствуйте! Вот посмотрите пожалуйста следующий код. Вроде бы работает, но не точно.
Скрипт извлекает со страницы 461объект вместо 586. В чем может быть дело?


<?php
set_time_limit
(600);
$url="http://dictionary.stroit.ru/alldict.html";

$page=file_get_contents($url);
$page=str_replace("\n",""$page);
$page=str_replace("\r",""$page);
$page=str_replace("<strong>",""$page);
$page=str_replace("</strong>",""$page);
$page=str_replace("|",""$page);

$num=0;
preg_match_all("|<dt[\s]+class=\"memosubhard\">([^<]+)</dt><dd[\s]+class=\"memotext\">([^<]+)</dd>|i"$page$matches); 
$page$matches); 
  
$cnt=count($matches[1]);
  for (
$j=0;$j<$cnt;$j++) { 
  
$num++;
  echo 
$num.".:\n"
  echo 
$matches[1][$j]."<br>\n"
  echo 
$matches[2][$j]."<hr>\n"
  } 
?>

   
 
 автор: cheops   (18.10.2005 в 17:57)   письмо автору
 
   для: kran   (18.10.2005 в 15:54)
 

А вы поступите проще:
<?php 
  set_time_limit
(600); 
  
$page file_get_contents("http://dictionary.stroit.ru/alldict.html");

  
$pattern "|<dl>[\s]*<dt[^>]+>([^<]+)</dt>[\s]*<dd[^>]+>(.*)</dd>[\s]*</dl>|isU";
  
preg_match_all($pattern$page$matches,PREG_PATTERN_ORDER); 
  for (
$j=0$j<count($matches[1]); $j++)
  { 
    echo 
$j.".:\n"
    echo 
$matches[1][$j]."<br>\n"
    echo 
$matches[2][$j]."<hr>\n"
  }
?>

Это выдаст все 586 объектов - там судя по всему ещё какие-то тэги имеются - здесь проще сыграть на инвертировании "жадности".

   
 
 автор: kran   (18.10.2005 в 20:38)   письмо автору
 
   для: cheops   (18.10.2005 в 17:57)
 

Спасибо!
В принципе задача была как раз получить данные без тегов и ссылок, а просто чистый текст!
Ошибку понял исправил, теперь работает как надо:

<?php
set_time_limit
(600); 
  
$page file_get_contents("http://dictionary.stroit.ru/alldict.html"); 

  
$page=str_replace("\n",""$page);
  
$page=str_replace("\r",""$page);
  
$page=str_replace("<strong>",""$page);
  
$page=str_replace("</strong>",""$page);
  
$page=preg_replace("|<a[\s]+[^>]+>[^<]+</a>|i",""$page);
  
  
$pattern "|<dl>[\s]*<dt[^>]+>([^<]+)</dt>[\s]*<dd[^>]+>(.*)</dd>[\s]*</dl>|isU"
  
preg_match_all($pattern$page$matches,PREG_PATTERN_ORDER); 
  
$num=0;
  for (
$j=0$j<count($matches[1]); $j++) 
  { 
    
$num++;
    echo 
$num.".:\n"
    echo 
$matches[1][$j]."<br>\n"
    echo 
$matches[2][$j]."<hr>\n"
  } 

?>


З.Ы. А название темы-то как переписали, я даже не сразу нашел ;-))
З.З.Ы. Следующий раз когда буду начинать тему - учту ;-))

   
 
 автор: Agdam   (09.11.2005 в 16:17)   письмо автору
 
   для: kran   (18.10.2005 в 20:38)
 

Уважаемый kran
Надо понимать, что не для дамашнего использования Вы пытаетесь скопировать информацию.
А спросить согласия автотров Словаря и владельцев портала на копирование и транслирование Словаря не считаете нужным?
С уважением,
Agdam

   
Rambler's Top100
вверх

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