Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

Вывод со страницы

#1 Р-е-З-а-К

Р-е-З-а-К
  • Пользователь
  • 5 сообщений
  • Репутация: 0
0

Отправлено 13 Июль 2012 - 04:51

Здравствуйте. у меня тут такая проблемка.. нужно вывести нужную информацию со страниц. есть 3-4 страницы на сайте.. на этих страницах текст и ссылки.. ссылки мне не нужны.. нужен только текст и то не весь а только там где есть нужное мне слово. страница идет строками.. 10 строчек на странице разделенными тегом <br/>. пример:
<br/>сегодня была хорошая погода.
<br/>завтра будит плохая.
<br/>послезавтра погода будит отличная.
так вот.. мне нужно вывести все строчки где есть слово погода :D пробывал таким кодом:
$content = file_get_contents("адрес_страницы");
$content2 = $content;
$pos = strpos($content2, "погода");
$content2 = substr($content2, $pos);
$pos = strpos($content2, "<br/>");
$m = substr($content2, 0, $pos);
но он выводит только одно первое совпадение на странице и то только начиная от слово погода и до <br/> и всё. а их там может до 10 быть на странице. кому не сложно подскажите пожалуйста как решить эту проблемку

 

 

  • 0

#2 c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 13 Июль 2012 - 06:29

Смотри, file_get_content возвращает тебе в одной переменной всё содержимое адреса.
И твои substr обрабатываются только один раз. - естественно, оно будет выводить только один раз.
в кратце прочитаем твой код:
$pos = найдем место, где появляется слово погода. (количество знаков до этого слова)
$content2 = обрезаем от 0го знака, до места $pos (тут теряется твое "погода")
$pos = опять смотрим где начинается в УЖЕ обрезаном "БР"
$m = обрезаем от 0 до $pos;

тоесть вовсе не то, что надо.

Что б решить твою задачу есть 2 способа:
1 - воспользоваться RegExp выражением, в частности (preg_match_all)
2 - преобразовать файл в массив по строчкам (<br/>) и пройтись по каждой строке


Пример 2го варианта:
$content = ('адрес страницы');
$array_of_lines = explore('<br/>',$content);
foreach ($array_of_lines as $single_line) {
    if(strpos($single_line,'погода')){
	    echo $single_line;
    }
}

http://php.net/manua...ion.explode.php
http://php.net/manua...tion.strpos.php
  • 1

#3 Р-е-З-а-К

Р-е-З-а-К
    Topic Starter
  • Пользователь
  • 5 сообщений
  • Репутация: 0

Отправлено 14 Июль 2012 - 03:23

а вот ещё одна задачка не решенная.. со страницами. нужно чтоб ещё 4 страницы назад проверял. там у меня идет так.. код проверят сколько всего записей и с последней записи начинает искать нужное слово.. и так 4 страницы ещё назад. допустим всего 100 записей.. это значит 10 страниц всего.. есть переменная $s и в ней эта цифра 100. нужно чтоб код открывал 90,80,70,60 записи ещё и там искал :D не охота повторять код 4 раза чтоб проверить 4 страницы. вроде это делается с for() но как именно не знаю толком. что добавить к коду чтоб норм было? )

$content = file_get_contents("http://домин&pg=$s");
$array_of_lines = explode("<br/>",$content);
foreach ($array_of_lines as $single_line) {
    if(strpos($single_line,"$slovo")){
		    echo $single_line,"<br/>";
    }
}

  • 0

#4 c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 15 Июль 2012 - 15:47

Р-е-З-а-К, на самом деле гугл в помощ :D
http://php.net/manua...uctures.for.php

$start = 100;  //твой старт
$step = 10;	//шаг в сколько "записей" назад
$count = 4;	//количество шагов назад

for($page = $start; $page>=$step*$count;$page-=$step){  
	$content = file_get_contents("http://домин&pg=$page");
	$array_of_lines = explode("<br/>",$content);
	foreach ($array_of_lines as $single_line) {
		if(strpos($single_line,$slovo)){
						echo $single_line,"<br/>";
		}
	}
}

И это можно сделать еще простым while...

Но, чем больше, скажем так страниц, будет открывать твой РНР код - тем дольше будет он выполняться у тебя на Сайте, т.к. пока он не откроет и не прочитает данные ( а это запрос ДНС, запросы хедеров, ответ внешнего сайта и т.д.) - он дальше не будет отрабатывать, значит у тебя будет висеть белая страница.

В таком случаи, нужно реализовывать для быстроты работа - какое-то кеширование, что типа с интервалом допустим в 1 день, запросы будут уходить на внешний сайт, брать данные и записывать у тебя на хостинге уже в какой-то временный файл, а все остальное время (пока не выйдет интервал 1 день) данные будут браться уже с этого файла.
  • 0

#5 Р-е-З-а-К

Р-е-З-а-К
    Topic Starter
  • Пользователь
  • 5 сообщений
  • Репутация: 0

Отправлено 16 Июль 2012 - 04:43

c0ns0l3, спасибо ещё раз ). да в гугле я искал.. конкретных и подходящих примеров не нашел тогда
  • 0

#6 c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 16 Июль 2012 - 06:00

Конкретно подходящих примеров может ты и не найдешь, но найти примерно какие ф-ции тебе нужны, документацию по этим ф-циям можно легко. А дальше простая логика для того, что б написать то, что именно тебе требуется.

Для этого форумы обычно и нужны, что бы подпихнуть в правильном направлении тебя.


  • 0


Оформление форума – IPBSkins.ru