Regexp Hilfe

Rocky

Mitglied
Hallo,

ich habe eine Datei die wie folgt aufgebaut ist:

Code:
<tr>

<td> <span id="nr001"></span> 001 </td>

<td style="height: 28px; text-align: center;"> <img src="http://www.greenchu.de/sprites/icons/001.png" alt="001.png" /> </td>

<td> <a href="/Bisasam" title="Bisasam">Bisasam</a> </td>

<td> Bulbasaur </td>

<td> Bulbizarre </td>

<td> フシギダネ </td>

<td> Fushigidane </td>

<td> 이상해씨 </td>

<td> Isanghaessi </td>

<td> <a href="/Pflanze_(Typ)" title="Pflanze (Typ)"><img alt="PflanzeIC.png" src="/images/8/84/PflanzeIC.png" width="50" height="18" /></a><span style="display:none">Pflanze</span>&#160;<a href="/Gift_(Typ)" title="Gift (Typ)"><img alt="GiftIC.png" src="/images/c/c3/GiftIC.png" width="50" height="18" /></a><span style="display:none">Gift</span>

</td></tr>

<tr>

<td> 002 </td>

<td style="height: 28px; text-align: center;"> <img src="http://www.greenchu.de/sprites/icons/002.png" alt="002.png" /> </td>

<td> <a href="/Bisaknosp" title="Bisaknosp">Bisaknosp</a> </td>

<td> Ivysaur </td>

<td> Herbizarre </td>

<td> フシギソウ </td>

<td> Fushigisou </td>

<td> 이상해풀 </td>

<td> Isanghaepul </td>

<td> <a href="/Pflanze_(Typ)" title="Pflanze (Typ)"><img alt="PflanzeIC.png" src="/images/8/84/PflanzeIC.png" width="50" height="18" /></a><span style="display:none">Pflanze</span>&#160;<a href="/Gift_(Typ)" title="Gift (Typ)"><img alt="GiftIC.png" src="/images/c/c3/GiftIC.png" width="50" height="18" /></a><span style="display:none">Gift</span>

</td></tr>

für jedes <tr> möchte ich nun die folgenden <td> zeilen auslesen: 3,4,5,7,9...

Für ein einzelnes <tr> klappt es schon, jedoch habe ich keine idee wie es mit mehreren <tr> geht

Mein bisheriger Code:

Code:
<?

$html = file_get_contents('Liste2.htm');

preg_match_all('%<td>(.*?)</td>%', $html, $namen);

foreach ($namen as $name) {

    if($name[1]) {

        preg_match('%<a(.*?)>(.*?)</a>%', $name[1], $name_de);

        $name_de = $name_de[2];

    }

    $name_en = $name[2];

    $name_fr = $name[3];

    $name_jap = $name[5];

    $name_kor = $name[7];

}

echo $name_de." | ".$name_en." | ".$name_fr." | ".$name_jap." | ".$name_kor."<br>";

?>
 
Sieh dir mal folgenden Code an (Live-Beispiel):
PHP:
$dom = new DomDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$rows = $xpath->query("//tr");

$cellsOfInterest = [2,3,6,8];

foreach ($rows as $row) {
  $cells = $xpath->query(".//td", $row);
  foreach ($cellsOfInterest as $cell) {
    $str = trim($cells->item($cell)->textContent);
    echo $str, "\n";
  }
  echo "---\n";
}
Ausgabe:
Code:
Bisasam
Bulbasaur
Fushigidane
Isanghaessi
---
Bisaknosp
Ivysaur
Fushigisou
Isanghaepul
---

Sauberer, lesbarer, wartbarer. Was will man mehr?
 
Soweit siehts besser aus danke sehr.
Nun sind das jeweils verschiedene sprachen für das selbe die ich in mysql über eine query eintragen möchte.
geht das damit auch dass ich eine für jede sprache mache die ich dann in der query übergebe wie bei meinem obigen vorhaben
 
Ja, mit meinem Code geht das auch.
Du musst nur mein erstes echo austauschen. Oder die innerste foreach-Schleife streichen. Das hängt davon ab, wie du die Daten am Ende vorliegen haben möchtest.
 
Zurück