Вземане на данни от друг сайт

maxaffey

Registered
Здравейте, направих следния код, който си бачка перфектно:

Код:
 <?php
$contents = file_get_contents("http://site.com");

$exp = explode("\n", $contents);
foreach($exp as $conts) 

{ $num = explode('<span class="num">', $conts); print $num[1]; } 



?>

искарва ми съдържанието от всеки span class="num" и ми го показва. Така взима около 100 числа и ми ги подрежда последователно.

Искам да попитам, как бих могъл на всяко искарано число да ми слага променлива, като после всичките променливи да си ги записвам в различни редове в MySQL таблица. т.е.

Мерси предварително
 
<?php
$contents = file_get_contents("http://site.com");
$i = 0;
$exp = explode("\n", $contents);
$broi = count($exp);
foreach($exp as $conts)
{
$i++;
$num = explode('<span class="num">', $conts); print $num[1];
$promenliva[''.$i.''] = $num[1];
}
?>

След
Така числата стават в array и можеш да ги изкараш примерно чрез $promenliva[10] и т.н.
И можеш после с for като преброиш резултата от explode-то да си запишеш всяка $promenliva с mysql_query();

Примерно:

for($i=0;$i<=$broi;$i++)
{
mysql_query(); // insert $promenliva[$i]
}

И ще се получи ;) Малко съм пийнал , все пак се празнува , ама реших да помогна , ако има грешки на 2ри ще ги оправям че утре ще съм реанимация :D ;)
 
Здрасти,

включих твоите неща в кода ми, но като искам да видя дали ги записва давам да ми покаже една променлива:
Код:
 echo $promenliva[10];

но не ми показва нищо а като дам да видя колко броя записа е взело с
Код:
 echo $broi;
ми изписва някакво число от порядъка на 20 150 а на екрана там където ми изкарва с
Код:
print $num[1];
ми показва показва само 100 записа.

А и тези записи които взимам в момента са числови а като се опитам да взема данни под формата на текст не се получава, да не би да има друга команда за вземането на текста?
 
Накой би ли ми помогнал и със следната аномалия?

при този скрипт:
Код:
<?php
$contents = file_get_contents("http://eurofootball.bg/tiraji_sreshti_prnt.php?v=football&tiraj_no=1&year=2011&action=1&details=show");

$exp = explode("\n", $contents);
foreach($exp as $conts)

{ $num = explode('num', $conts); 

$izc = $num[1]; 

echo $izc; 

}

?>

ми изкарва номерата на всички срещи като след тях оставя и части от скрипта като sel"> или sel jp4"> но тях ще ги изчистя с ereg_replace.

При същия код, но с заявка да ми изкара данните след думата "min"

Код:
<?php
$contents = file_get_contents("http://eurofootball.bg/tiraji_sreshti_prnt.php?v=football&tiraj_no=1&year=2011&action=1&details=show");

$exp = explode("\n", $contents);
foreach($exp as $conts)
{ $min = explode('min', $conts); 

$min1 = $min[1]; 

echo $min1; 
}

?>

не ми изкартва всички данните които са зад "min" а само sel"> които ги има като остатък от скрипта.

Същото е положението и със скрипта когато го пусна да ми търси зад думата "matches":

Код:
<?php
$contents = file_get_contents("http://eurofootball.bg/tiraji_sreshti_prnt.php?v=football&tiraj_no=1&year=2011&action=1&details=show");

$exp = explode("\n", $contents);
foreach($exp as $conts)
{ $matches = explode('matches', $conts); 


$matches1 = $matches[1]; 


echo $matches1; 

}

?>

Би трябвало да ми изкарва имената на мачовете а вместо тях ми изкарва само остатъка от скрипта след имената на мачовете!

Пробвам същия скрипт да взема съдържанието след думите <em> ; hour ; odd_1 ; odd_x ; odd_2 и си взима данните коректно.

Търсих из цялата им страница да няма някаква защита за тези думи, защото няма логика при едни думи да става а при други не но... :shock:



Ако някой може да ми помогне с тази анумалия ще съм много благодарен.
 
Пробвай това:

Код:
<?php
$contents = file_get_contents("http://eurofootball.bg/tiraji_sreshti_prnt.php?v=football&tiraj_no=1&year=2011&action=1&details=show");

$exp = explode("\n", $contents);
foreach($exp as $conts)
{ $matches = explode('<strong>', $conts);


$matches1 = $matches[1];


echo $matches1;

}

?>
 
Нестава :cry: . А като го сложа без <> ми изписва пак някакви остатъчни от кода символи като >'.

Незнам защо не се получава, моля някой да помогне защото пробвах всичко, но резултат никакъв :(
 
Искаш да вземеш съдържанието от всички <strong> елементи така ли?
Код:
<?php
	header('Content-type: text/html; charset=windows-1251');
	$contents = file_get_contents("http://eurofootball.bg/tiraji_sreshti_prnt.php?v=football&tiraj_no=1&year=2011&action=1&details=show");

	preg_match_all('#<strong\s?>(.*?)</strong>#is', $contents, $matches);
	$matches = $matches[0]; // Премахваме ненужната информация, която preg_match_all ни връща и оставяме само резултатите :)
	foreach ($matches as $m) {
		echo $m . '<br>';
	}	
?>
При мен това работи безотказно :)
Първият ред съм го сложил, защото сървъра ми по подразбиране сервира страниците с utf-8 кодировка. На теб може да не ти е нужно :)
BTW, ако имаш възможност използваш cURL библиотеката за да вземеш информацията от страницата. Функцията file_get_contents е доста бавна.
Можеш да провериш дали сървъра ти има cURL по следният начин:
Код:
echo (int) function_exists('curl_init');
 
Мерси много F1r3Fl3x, най-после се получава нещо :D , явно всичко е било в енкодинга.

Можеш ли само да ми помогнеш получения резултат да го запиша в база данни като всяка получена променлива да се записва в различен ред на базата данни, защото като се опитам да запиша получената променлива $m ми записва само последният ред от изкараните променливи.
 
Това става защото изпълняваш заявката извън цикъла. Трябва заявката да е в тялото на цикъла за да може да се създаде отделен ред в базата данни за всеки от елементите.
Код:
foreach ($matches as $m) {
      echo $m . '<br>';
     mysql_query('INSERT ... ');
   }
 

Back
Горе