Autor Zpráva
Picík
Profil *
Ahoj,
předem říkám že to co dělám je neslušné a vím to.

Snažím se z cizí stránky zobrazit čast na mé stránce.
Pomocí tohoto scriptu:
 <?php

$url = "http://lyrics.wikia.com/wiki/Dolly_Parton:Dumb_Blonde";
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);

$result=curl_exec($ch);    // zde je celý obsah webu z $url

var_dump($result);

?>
Dostanu celou stránku webu.
Potřeboval bych dostat text uzavřený do <div class="lyricbox"></div>

Zkoušel jsem toto:
$url = "http://lyrics.wikia.com/wiki/Dolly_Parton:Dumb_Blonde";
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);

$result=curl_exec($ch);    // zde je celý obsah webu z $url
if(!preg_match('~<div class="lyricbox"[^>]*>(.*?)</div>~si', $result, $matches)) return;
$matches= $matches[1];
var_dump($matches);

Ale nevrátí mi to nic. Asi vím kde je problém a to že před tím divem je tato část kodu:
<noscript><div class='gracenote-header'>You must enable javascript to view this page.  This is a requirement of our licensing agreement with music Gracenote.</div><style type='text/css'>.lyricbox{display:none !important;}</style></noscript>

Je možné to nějak vyřešit?
nightfish
Profil
if(!preg_match("~<div class='lyricbox'[^>]*>(.*?)</div>~si", $result, $matches)) return;
Picík
Profil *
nightfish:
Díky.
nenapadlo mě že to může být v uvozovkách.
TomášK
Profil
Máš pravdu, parsovat HTML pomocí regulárních výrazů je opravdu neslušné, slušný člověk by to dělal HTML parserem :-) Problém je v uvozovkách
<div class="lyricbox"></div>
vs
<div class='lyricbox'></div>

Edit: s křížkem po funuse koukám

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: