webForumDet fria alternativet

hämta tabelldata från annan sida

6 svar · 499 visningar · startad av corepad_

corepad_Medlem sedan mars 20076 inlägg
#1

hur kan man gå tillväga för att hämta ut resultatet av en sökning från
t.ex. blocket till en array med de olika värdena (pris, rubrik, stad etc).. ?

behöver lite grundliga tips.

Nu har jag lyckats hämta med file_get_contents och resultatet blir ungefär såhär:

<table>
 <tr>
  <td class="datum">25/5 2006</td>
  <td class="rubrik">Volvo 740 -93</td>
 </tr>
</table>

Jag vill nu splitta upp datan till en array med följande utseende:

<?

array(
 "datum" => array(
    "25/5 2006"
 );
 "rubrik" => array(
    "Volvo 740 -93"
 );
);

?>

Någon som har ett förslag på hur jag ska gå till väga?

MVH Erik.

itpastornMedlem sedan feb. 2007278 inlägg
#2

XPath ihop med DOM eller SimpleXML

XPAth selektorerna torde bli typ:

//td[datum]
//td[rubrik]

Detta betyder: Hitta alla td-element som har klassen "datum" eller rubrik. ungefär som "td.datum" i CSS.

corepad_Medlem sedan mars 20076 inlägg
#3

Hmm jag har absolut ingen erfarenhet av varken "XPath" eller "DOM" eller "SimpleXML" så jag vore tacksam för en grundlig vägledning.

itpastornMedlem sedan feb. 2007278 inlägg
#4
<?php
$string = <<<EOT
<table>
 <tr>
  <td class="datum">25/5 2006</td>
  <td class="rubrik">Volvo 740 -93</td>
 </tr>
 <tr>
  <td class="datum">23/6 2006</td>
  <td class="rubrik">Saab 9-5</td>
 </tr>
</table>
EOT;

$xml = new SimpleXMLElement($string);

$alla_datum = $xml->xpath('//td[@class="datum"]');
$alla_rubriker = $xml->xpath('//td[@class="rubrik"]');

$data = array();
while(list( , $datum) = each($alla_datum)) {
    /* Flytta till vanlig array behövs egentligen inte men ok */
    $data['datum'][] = (string)$datum;
    list( , $bil) = each($alla_rubriker);
    $data['rubrik'][] = (string)$bil;
}

// Testa
var_dump($data);

Oops! Jag hade lite fel om XPAth uttrycken. De riktiga finns i koden ovan.

corepad_Medlem sedan mars 20076 inlägg
#5

Är SimpleXML något som är inbyggt i PHP eller är det nåt jag måste installera för att det ska funka?

PeddaMedlem sedan juni 20006 032 inlägg
#6

SimpleXML är med i PHP 5 och är aktiverat som default.

corepad_Medlem sedan mars 20076 inlägg
#7

Får felmeddelanden liknande:

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: Entity: line 1: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE4 0x74 0x74 0x65 in

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ct_code/1/sort/-fulldate/type_label/S%E4ljes/id/A10583897/category_name/Bostadsr in

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: e v" src="/images/58/38/97/A10583897/image_1_37380small.jpg" height="48" border= in

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)