Спустя 1 час, 9 минут, 43 секунды (27.04.2012 - 12:04) johniek_comp написал(а):
SampleHTMLDom в помощь, делается в 2 строчки
Спустя 2 минуты, 16 секунд (27.04.2012 - 12:07) Игорь_Vasinsky написал(а):
file_put_contents()
Спустя 20 часов, 11 минут, 41 секунда (28.04.2012 - 08:18) Guest написал(а):
Цитата |
SampleHTMLDom в помощь, делается в 2 строчки |
да, описание почитал, достаточно интересная штука) но вот код кое-как написал, а он, естественно, не работает...
<?php
include('simple_html_dom.php');
$articles = array();
getArticles('http://nya.sh/');
function getArticles($page) {
global $articles;
$html = new simple_html_dom();
$html->load_file($page);
}
$items = $html->find('div[class=content]');
foreach($items as $names)
{
$articles[] = array($post->children(0)->plaintext);
}
foreach($articles as $item) {
echo "<div class='item'>";
echo $item[0];
echo "</div>";
}
?>
пишет мол "Fatal error: Call to a member function find() on a non-object in X:\denwer\www\denwer\new\index1.php on line 15"
Спустя 27 минут, 22 секунды (28.04.2012 - 08:46) Dagot написал(а):
почитая про парсинг и библеотеку curl
Спустя 9 минут, 5 секунд (28.04.2012 - 08:55) Guest написал(а):
да, спасибо :) уже разобрался. вчера видимо весь мозг убил новой информацией. сегодня сел, погуглил и все получилось. действительно всего пара строчек кода :)
можт кому пригодится :)
<?
include_once("simple_html_dom.php");
$temp = file_get_html("http://nya.sh/");
$text = $temp -> find('div[class=content]');
foreach($text as $tmp) print($tmp->outertext);
?>
можт кому пригодится :)
Спустя 1 минута, 41 секунда (28.04.2012 - 08:56) Dagot написал(а):
часто такое бывает)
достаточно выспаться и на следующий день быстро решаешь задачу....
достаточно выспаться и на следующий день быстро решаешь задачу....
Спустя 5 часов, 19 минут, 53 секунды (28.04.2012 - 14:16) Guest написал(а):
так, код потихоньку продвигается. но снова есть затруднение
проблема в том, что в файл записывается толкьо одна строка. даже если меняю номер цитаты. т е в массиве $text[0] меняю 0 на 1, хотя поидеи
с параметром "w", каретка должна стоять в начале файла. и следовательно должна добавиться новая строка. т е после изменения массива с 0 на 1 в сохраненном файле должно быть 2 цитаты.
<?
include_once("simple_html_dom.php");
$temp = file_get_html("http://nya.sh/");
$text = $temp -> find('div[class=content]');
echo $text[0] //просто посмотерть что за цитату берем
?>
<?
$chrs_cnt = strlen($text[0]);
if ($chrs_cnt<500) //если цитата длинная, то ничего не делаем
{
$f_o_w = fopen("citati.txt", "w");
fwrite($f_o_w, $text[0]); //записываем первую цитату с сайта
fclose($f_o_w); //закрываем файл
$f_o_r = fopen("citati.txt", "r");
$buffer_new = fread($f_o_r, filesize("citati.txt")); //записываем в переменную содержимое
fclose($f_o_r); //закрываем файл
$f_o_r1 = fopen("citati_final.txt", "r+");
$buffer_old = fgets($f_o_r1 ,1); //записываем в переменную содержимое первой строки
fclose($f_o_r1);
strcmp($buffer_new, $buffer_old); //сравниваем строчки из двух файлов
if (strcmp!==0) //если строки не совпадают
{
$f_o_w1 = fopen("citati_final.txt", "w"); //открываем файл для записи
fwrite($f_o_w1, $buffer_new); //записываем в файл с цитатами в контент, цитату с сайта
fclose($f_o_w1); //закрываем файл
}
}
$f_o_a = fopen("citati_final.txt", "a");
fwrite($f_o_a, "\n"); //вставляем переход на новую строку вконце
fclose($f_o_a);
?>
проблема в том, что в файл записывается толкьо одна строка. даже если меняю номер цитаты. т е в массиве $text[0] меняю 0 на 1, хотя поидеи
$f_o_w1 = fopen("citati_final.txt", "w");
с параметром "w", каретка должна стоять в начале файла. и следовательно должна добавиться новая строка. т е после изменения массива с 0 на 1 в сохраненном файле должно быть 2 цитаты.
Спустя 12 минут, 39 секунд (28.04.2012 - 14:29) Guest написал(а):
БЛИН! надо курить мануалы....
Цитата |
r – открытие файла только для чтения. r+ - открытие файла одновременно на чтение и запись. w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается. w+ - аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется. a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла). a+ - открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется. |
Спустя 18 часов, 32 минуты, 48 секунд (29.04.2012 - 09:02) Guest написал(а):
и снова здравствуйте)
при сравнении строк, показывает что они не равны... понятно, что после превого прохода это так, но после второго, цитаты одинаковые. вот что выводится после второго прохода
<?
include_once("simple_html_dom.php");
$temp = file_get_html("http://nya.sh/");
$text = $temp -> find('div[class=content]');
?>
<?
$chrs_cnt = strlen($text[2]);
if ($chrs_cnt<500) //если цитата длинная, то ничего не делаем
{
$f_o_w = fopen("citati.txt", "w");
fwrite($f_o_w, $text[2]); //записываем первую цитату с сайта
fclose($f_o_w); //закрываем файл
$arr_cit = file("citati.txt");
$buffer_new = $arr_cit[0]; //первая строка из файла в массив
$arr_cit_fin = file("citati_final.txt");
$buffer_old = $arr_cit_fin[0]; //первая строка из файла в массив
$srvn = strcmp($buffer_new, $buffer_old); //сравниваем строчки из двух файлов
echo $buffer_new;
echo $srvn;
echo $buffer_old;
if ($srvn != 0) //если строки не совпадают
{
$rn = "\r\n";
$f_o_w1 = fopen("citati_final.txt", "w+"); //открываем файл для записи
fwrite($f_o_w1, $buffer_new.$rn.$buffer_old); //записываем в файл с цитатами в контент, цитату с сайта
fclose($f_o_w1); //закрываем файл
}
}
?>
при сравнении строк, показывает что они не равны... понятно, что после превого прохода это так, но после второго, цитаты одинаковые. вот что выводится после второго прохода
Цитата |
Epileptik aka Fis: Санкарея винрарна. Epileptik aka Fis: Cдох кот?! Epileptik aka Fis: Cвари зелье, сделай из него зомби! Epileptik aka Fis: УДИВИ БЛИЗКИХ -2 Epileptik aka Fis: Санкарея винрарна. Epileptik aka Fis: Cдох кот?! Epileptik aka Fis: Cвари зелье, сделай из него зомби! Epileptik aka Fis: УДИВИ БЛИЗКИХ |
Спустя 12 минут, 6 секунд (29.04.2012 - 09:14) Guest написал(а):
и снова всем спасибо)))
виноваты \r\n они и добавляли это несоответствие. тупо прибавил к переменной $srvn +2 и все норм считает)) работает и ладно. но все же интересно как это решается по рпавильному
виноваты \r\n они и добавляли это несоответствие. тупо прибавил к переменной $srvn +2 и все норм считает)) работает и ладно. но все же интересно как это решается по рпавильному
Спустя 12 часов, 23 минуты, 59 секунд (29.04.2012 - 21:38) walerus написал(а):
Цитата |
$srvn = strcmp($buffer_new, $buffer_old); //сравниваем строчки ( ИХ ДЛИНУ!!! )из двух файлов |
Я бы это
if ($srvn != 0) //если строки не совпадаютЗаменил на это
if ( trim( $buffer_new ) != trim( $buffer_old ) )и все, trim (обрежет все \r\n\t )...
P.S. Как по мне, так я хранил бы все цитаты в сериализированном массиве и проще, и понятнее, и удобнее работать с массивом.
Спустя 2 дня, 10 часов, 39 минут, 25 секунд (2.05.2012 - 08:17) Guest написал(а):
спасибо