php tabelle parsen und als array zurückgeben

ich bin kein doppelpostfreund, aber ich hoffe die beteiligten bekommen so fix mit dass sich was tut :o)
mithilfe der klasse js_extract bekomme ich nun ein array zurück in dem alles enthalten ist wie ich es theoretisch brauche :) das array sieht folgendermaßen aus:

Code:
array(11) 
  {
    [0]             array(4) 
    {
      [0]           string(1) "1"
      [1]           string(4) "Fate"
      [2]           string(1) "1"
      [3]           string(9) "Schicksal"
    }
    [1]             array(4) 
    {
      [0]           string(1) "2"
      [1]           string(8) "Oak Ring"
      [2]           string(1) "2"
      [3]           string(14) "Der Ochre-Ring"
    }
    [2]             array(4) 
    {
      [0]           string(1) "3"
      [1]           string(6) "Allies"
      [2]           string(1) "3"
      [3]           string(10) "Der Freund"
    }
    [3]             array(4) 
    {
      [0]           string(1) "4"
      [1]           string(9) "Challenge"
      [2]           string(1) "4"
      [3]           string(19) "Die Herausforderung"
    }
    [4]             array(4) 
    {
      [0]           string(1) "5"
      [1]           string(4) "Duel"
      [2]           string(1) "5"
      [3]           string(9) "Das Duell"
    }
    [5]             array(4) 
    {
      [0]           string(1) "6"
      [1]           string(9) "Blanc Law"
      [2]           string(1) "6"
      [3]           string(16) "White Wolf Demon"
    }
    [6]             array(4) 
    {
      [0]           string(1) "7"
      [1]           string(12) "Independence"
      [2]           string(1) "7"
      [3]           string(15) "Unabhängigkeit"
    }
    [7]             array(4) 
    {
      [0]           string(1) "8"
      [1]           string(6) "Depths"
      [2]           string(1) "8"
      [3]           string(12) "In der Tiefe"
    }
    [8]             array(4) 
    {
      [0]           string(1) "9"
      [1]           string(10) "Beast King"
      [2]           string(0) ""
      [3]           string(0) ""
    }
    [9]             array(4) 
    {
      [0]           string(2) "10"
      [1]           string(8) "Juuousei"
      [2]           string(0) ""
      [3]           string(0) ""
    }
    [10]            array(4) 
    {
      [0]           string(2) "11"
      [1]           string(6) "Desire"
      [2]           string(0) ""
      [3]           string(0) ""
    }
  }

ich möchte das ganze aber halt in form von meinem beispiel haben, also dachte ich mir ich könnte das ganze in ner for schleife durchjagen und das ganze halt von einem array ins andere schreiben... leider habe ich es nochnicht geschafft das hinzukommen. mein folgender versuch funktioniert so anscheinend schonmal nicht:

PHP:
	$extractor = new JS_Extractor($output);
	$body = $extractor->query("body")->item(0);
	$table = $body->query("//table")->item(0);
	$table->splitCells();
	$data = $table->extract(array("tr", "td"));
	
	for($i = 0; $i < count($data); $i++)
    {
    	$output[$i]['en'] = $data[$i][2];
    	$output[$i]['de'] = $data[$i][4];
    }

wäre sehr dankbar wenn mir da wer helfen kann :o)
 
Hi!

Probier mal das:
PHP:
    $extractor = new JS_Extractor(file_get_contents('sample.php'));
    $body = $extractor->query("body")->item(0);
    $table = $body->query("//table")->item(0);
    $table->splitCells();
    $data = $table->extract(array("tr", "td"));
   
   foreach($data as $elements)  {
   		$a[$elements[0]]["en"] = $elements[1];
   		$a[$elements[0]]["de"] = $elements[3];
   }

Das Ergbenis:
PHP:
Array
(
    [1] => Array
        (
            [en] => Fate
            [de] => Schicksal
        )

    [2] => Array
        (
            [en] => Oak Ring
            [de] => Der Ochre-Ring
        )

    [3] => Array
        (
            [en] => Allies
            [de] => Der Freund
        )
    ...
}

Edit:
Bitte schau dir nochmal die Forum-Regeln zum Thema Groß- und Kleinschreibung an. Danke!

Viele Grüße,
Jacka

P.S.: Danke für den Tipp mit dem JS_Extractor! ;)
 
Zuletzt bearbeitet:
Ja die Klasse ist echt ziemlich mächtig und bietet gute Funktionen finde ich :o)
Tut mir leid wegen der Groß- und Kleinschreibung^^" hatte das vergessen, war auch etwas im Stress :)

hatte es gerade auch hinbekommen :D
Mit leicht anderem Weg^^ Ich musste die Variable bei mir vorher erst als Array erstellen.

Weisst du zufällig ob die Geschwindigkeit sich zwischen deiner und Meiner Schleife sehr unterscheiden?^^ Ich könnte mir vorstellen, dass die ForEach-Schleife performanter ist als die "einfache" For-Schleife :)

Meine Möglichkeit ist etwas laienhafter ;) aber es kommt auch dasselbe bei raus :D
PHP:
$extractor = new JS_Extractor($temp);
	$body = $extractor->query("body")->item(0);
	$table = $body->query("//table")->item(0);
	$table->splitCells();
	$data = $table->extract(array("tr", "td"));
$output = array();
	for($i = 0; $i < (count($data)); $i++)
    {
    	$a[$i]['en'] = $data[$i][1];
    	$a[$i]['de'] = $data[$i][3];
    }
	return $a;
 
Zuletzt bearbeitet:
Hmm.. keine Ahnung was da schneller ist.
Ist warscheinlich ähnlich.

Schön das es funktioniert! ;o)

Grüße,
Jacka
 
Zurück