| Autor | Zpráva | ||
|---|---|---|---|
| Re4DeR Profil |
#1 · Zasláno: 28. 2. 2012, 16:09:07
Ahoj používáte někdo simplehtml? Můžete mi prosím pomoci s tímto problémem ?
Mám soubor test.html který vypadá takto: <table class="test" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<a target="_blank" href="http://seznam.cz/index.html" title="open link">
<script language='Javascript'>document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));</script>
</a>
</td>
</tr>
</table>A potřebuji z toho získat href linku = "h t t p : / / seznam.cz/index.html" . To se mi bohužel nedaří. Ale pokud soubor načtu pres funkci file() tak se to načte. Zkoušel jsem to i pomocí DOM, ale s tím jsem nikdy nepracoval a neumím s tím. Chybí mi zde není něco jako innerHTML Soubor kterým to zkouším získat: <?php
require 'simple_html_dom.php';
echo "Toto vrací načítání přes php funkci file:<br>";
echo "----------------------------------------------------------<br>";
$lines = file('test.html');
foreach ($lines as $line_num => $line) {
echo htmlspecialchars($line) . "<br>\n";
}
echo "----------------------------------------------------------<br>";
echo "<br><br><br>";
echo "Toto vrací načítání přes knihovnu SIMPLE HTML (chybějící href):<br>";
echo "----------------------------------------------------------<br>";
$html = file_get_html("test.html");
foreach($html->find('table.test') as $prvek) {
echo htmlspecialchars($prvek);
}
echo "<br>----------------------------------------------------------<br>";
echo "<br><br><br>";
echo "Toto vrací načítání přes php dom (chybějící href):<br>";
echo "----------------------------------------------------------<br>";
$s = file_get_contents('test.html');
$dom = new DOMDocument();
$ok = $dom->loadHTML($s);
$table = $dom->getElementsByTagName('table');
foreach ($table as $tag) {
echo htmlspecialchars($tag->nodeValue);
}
echo "<br>----------------------------------------------------------<br>";
echo "<br><br><br>";
echo "Toto vrací načítání přes php dom xpath (chybějící href):<br>";
echo "----------------------------------------------------------<br>";
$xpath = new DOMXPath($dom);
$link = $xpath->query('//table/tr/td')->item(0)->nodeValue;
echo $link;
echo "<br>----------------------------------------------------------<br>";
?>a výsledek co mi to vyplivne: Toto vrací načítání přes php funkci file:
----------------------------------------------------------
<table class="test" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<a target="_blank" href="http://seznam.cz/index.html" title="open link">
<script language='Javascript'>document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));</script>
</a>
</td>
</tr>
</table>
----------------------------------------------------------
Toto vrací načítání přes knihovnu SIMPLE HTML (chybějící href):
----------------------------------------------------------
<table class="test" > <tr> <td> <a target="_blank" > <script language='Javascript' >document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));</script> </a> </td> </tr> </table>
----------------------------------------------------------
Toto vrací načítání přes php dom (chybějící href):
----------------------------------------------------------
document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));
----------------------------------------------------------
Toto vrací načítání přes php dom xpath (chybějící href):
----------------------------------------------------------
document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));
----------------------------------------------------------Nejlepší řešení by asi bylo přes simplehtml. Nevíte jak z toho ten href dostat? Děkuji za pomoc |
||
| peta Profil |
#2 · Zasláno: 29. 2. 2012, 13:22:36
google = php parse html
Naslo mi to class: http://simplehtmldom.sourceforge.net/ dokumentace: http://simplehtmldom.sourceforge.net/manual.htm download: http://sourceforge.net/projects/simplehtmldom/files/ Nebo priklad na parsovani XML pro pocasi <?php
//http://www.google.com/ig/api?weather=opava,cz
//http://www.exorithm.com/algorithm/view/weather_forecast
function att($att,$type,$row=0)
{
global $xml;
switch ($type)
{
case 1 : return $xml->weather->current_conditions->{$att}['data'];
case 2 : return $xml->weather->forecast_conditions->$row->{$att}['data'];
default: return $xml->weather->forecast_information->{$att}['data'];
}
}
function img($url,$width=35,$title)
{
//return '<img src="http://www.google.com/'.$url.'"/>';
$name = substr($url,strrpos($url,'/')+1,-4);
$images = array(
'cloudy' => 'cloudy',
'mostly_cloudy' => 'partly_cloudy',
'mostly_sunny' => 'partly_cloudy',
'chance_of_rain' => 'light_rain',
'chance_of_storm'=> 'tstorms',
'mist' => 'light_rain',
'sunny' => 'sun',
'chance_of_snow' => 'light_snow',
'flurries' => 'light_snow'
);
$name = isset($images[$name]) ? $images[$name] : $name;
$name = $name.'.png';
$url_folder = $width==60 || $width==35 ? $width : 35;
return '<img src="http://ssl.gstatic.com/onebox/weather/'.$url_folder.'/'.$name.'" alt="'.$name.'" width="'.$width.'" title="'.$title.'">';
}
header('content-type: text/html; charset: utf-8');
$data = file_get_contents('http://www.google.com/ig/api?weather=opava,cz&hl=cs');
$data = iconv("iso-8859-2", "UTF-8", $data );
$xml = simplexml_load_string($data);
$loc = str_replace(',',', ',att('city',0));
$date = att('forecast_date',0);
$t = '°C';
$html = '
<html>
<head>
<title>Počasí</title>
<style type="text/css">
html, body {margin:0;padding:0;}
.f1, .f2 {border-collapse:collapse; border-spacing:0;}
.f1 caption {font-weight:bold;text-align:left;}
.f1 caption:first-letter {text-transform:uppercase;}
.f2 {color:#666;}
.f1 .temp {font-size:125%;}
.f2 .temp {font-size:85%;}
</style>
</head>
<body>
';
$html .= "
<table class=\"f1\" summary=\"Aktuální počasí pro ".$loc."\">
<caption>".$loc."</caption>
<tr>
<td width=\"35\">".img(att('icon',1),35,att('condition',1))."</td>
<td><div class=\"temp\">".att('temp_c',1).$t."</div></td>
</tr>
<tr>
<td colspan=\"2\">
<div class=\"wind\">".preg_replace('/\ss.*?rychlostí/',',',att('wind_condition',1))."</div>
<div class=\"hum\">" .att('humidity',1)."</div>
</td>
</tr>
</table>";
$html .= "
<table class=\"f2\" summary=\"Předpověď počasí\">";
for ($i=0;$i<4;$i++)
{
$html .= "
<tr>
<td>".img(att('icon',2,$i),16,att('condition',2,$i))."</td>
<td><div class=\"temp\">".att('high',2,$i).$t.', '.att('low',2,$i).$t."</div></td>
<td> ".att('day_of_week',2,$i)."</td>
</tr>";
}
$html .= "
</table>
</body>
</html>
";
echo $html;
?> |
||
| Re4DeR Profil |
#3 · Zasláno: 2. 3. 2012, 02:18:29
Asi jsi nečetl co jsem psal. Ale děkuji. Už jsem to vyřešil.
Stáhl jsem soubor pomoci file_get_content , nasel a odstranil ten javascript a pak teprve na to pustil simplehtml |
||
|
Časová prodleva: 14 let
|
|||
0