Autor Zpráva
Tuzka
Profil *
Ahoj,
níže script háže hlášku Warning: file_get_contents ikdyž url existuje.
Některé to zobrazí u některých to hodí chybu již zmíněnou.
Lze to nějak vyřešit?

function ziskat($url)
{
    $content = file_get_contents($url);
    $first_step = explode( '<div>' , $content );
    $second_step = explode("</div>" , $first_step[1] );

    $obsah = strip_tags($second_step[0]);
    return $obsah;

}
echo ziskat("www.azlyrics.com/lyrics/$interpret/$skladba.html");

Adresa u které mi to háže chybu je www.azlyrics.com/lyrics/garthbrooks/midnightsun.html
Když si nechám vypsat echo "www.azlyrics.com/lyrics/$interpret/$skladba.html";, tak je právě ta co existuje.
Taps
Profil
Tuzka:
chybu to vyhazuje i když použiješ url s http?
http://www.azlyrics.com/lyrics/$interpret/$skladba.html
Tuzka
Profil *
Taps:
Ano úplně stejnou
Adams02
Profil
Tuzka:
Mohlo by to být prohlížečem, protože mně ta URL funguje (Používám Google Chrome).
Tuzka
Profil *
Adams02:
To mě ta url také funguje, jen né v tom scriptu.
PHP info mi ukazuje:
allow_url_fopen On
allow_url_include Off


V chrome to mám stejně.
Tuzka
Profil *
Ještě je u toho jedna hláška a to: failed to open stream: HTTP request failed! in na řádku $content = file_get_contents($url);
PecanCZ
Profil
zkus cURL stackoverflow.com/questions/697472/why-file-get-contents-returns-failed-to-open-stream-http-request-failed
Tuzka
Profil *
Zkusil jsem to takto:
function ziskatlyrics($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $output = curl_exec($ch);
  curl_close($ch);
  $first_step = explode( '<div>' , $output );
    $second_step = explode("</div>" , $first_step[1] );

    $obsah = strip_tags($second_step[0]);
    var_dump($obsah);

}
echo ziskatlyrics("http://www.azlyrics.com/lyrics/$interpret/$skladba.html");

}

A vypíše mi to: string(0) ""


Ještě jedna úprava, ovšem zase bez výsledku:

function ziskatlyrics($url) {
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $output = curl_exec($ch);
  $obsah = explode('/<div>(.*?)<\/div>/s', $output);
    var_dump($obsah);
    var_dump($url);
  curl_close($ch);


}
echo ziskatlyrics("http://www.azlyrics.com/lyrics/$interpret/$skladba.html");

Vypíše:
array(1) {
  [0]=>
  string(0) ""
}
string(61) "http://www.azlyrics.com/lyrics/garth-brooks/midnight-sun.html"
Tuzka
Profil *
Zkusil jsem to ještě celé jinak ale také bez výsledku:
function ziskatlyrics($url) {
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
curl_close ($curl);


preg_match('/<div>(.*?)<\/div>/s', $result, $matches);
print_r($matches[1]);

$vysledek = $matches[1];
print $result;
    var_dump($vysledek);
    var_dump($url);

}
echo ziskatlyrics("http://www.azlyrics.com/lyrics/$interpret/$skladba.html");

Var_dump vypíše:
NULL
string(59) "www.azlyrics.com/lyrics/garthbrooks/midnightsun.html"

Možná mám špatně ten regulerní výraz, nevím jak ho ověřit ale '/<div>(.*?)<\/div>/s'
Slark
Profil *
<?php
$data = file_get_contents("http://www.azlyrics.com/lyrics/garthbrooks/midnightsun.html");
preg_match('/<div>(.*?)<\/div>/s',$data,$matches);
echo $matches[0];
?>

Vypíše:

[Verse 1:]
Ain't no hay left on the ground
Gonna join the sun in sitting down
My last bale and well my tail is dragging
Cotton shirt, Cotton mouth
Cold ones waiting at the house
It's time for me to get down off the wagon
....
....
....


Pokud vám kód nefunguje bude chyba na straně konfigurace vašeho serveru.
Tuzka
Profil *
Slark:
Bohužel stejná chyba jako v prvním příspěvku.

Pokud vám kód nefunguje bude chyba na straně konfigurace vašeho serveru.
Proč to nedělá u všech adres?


Odzkoušeno i na jiném hostingu a stejný problém
Tuzka
Profil *
Vypis z curl info

DEBUG
array(20) {
  ["url"]=>
  string(59) "http://www.azlyrics.com/lyrics/garthbrooks/midnightsun.html"
  ["content_type"]=>
  string(9) "text/html"
  ["http_code"]=>
  int(404)
  ["header_size"]=>
  int(343)
  ["request_size"]=>
  int(90)
  ["filetime"]=>
  int(-1)
  ["ssl_verify_result"]=>
  int(0)
  ["redirect_count"]=>
  int(0)
  ["total_time"]=>
  float(0.006943)
  ["namelookup_time"]=>
  float(0.003477)
  ["connect_time"]=>
  float(0.004391)
  ["pretransfer_time"]=>
  float(0.004431)
  ["size_upload"]=>
  float(0)
  ["size_download"]=>
  float(408)
  ["speed_download"]=>
  float(58764)
  ["speed_upload"]=>
  float(0)
  ["download_content_length"]=>
  float(0)
  ["upload_content_length"]=>
  float(0)
  ["starttransfer_time"]=>
  float(0.006913)
  ["redirect_time"]=>
  float(0)
}
Slark
Profil *
To je divné., u koho máte hosting? Není možné že ten web banuje ip adresu hostingu?
Tuzka
Profil *
Slark:
Zkouším to na dvou hostinzích. Endora a hosting-zdarma.cz
O blokaci ip asi nemůže být řeč, protože některou adresu to vypíše správně

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0