|
|
|
| Здравствуйте! Вот посмотрите пожалуйста следующий код. Вроде бы работает, но не точно.
Скрипт извлекает со страницы 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";
}
?>
|
| |
|
|
|
|
|
|
|
для: 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 объектов - там судя по всему ещё какие-то тэги имеются - здесь проще сыграть на инвертировании "жадности". | |
|
|
|
|
|
|
|
для: 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";
}
?>
|
З.Ы. А название темы-то как переписали, я даже не сразу нашел ;-))
З.З.Ы. Следующий раз когда буду начинать тему - учту ;-)) | |
|
|
|
|
|
|
|
для: kran
(18.10.2005 в 20:38)
| | Уважаемый kran
Надо понимать, что не для дамашнего использования Вы пытаетесь скопировать информацию.
А спросить согласия автотров Словаря и владельцев портала на копирование и транслирование Словаря не считаете нужным?
С уважением,
Agdam | |
|
|
|