• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

RegExp Hilfe

Rocky007

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>";
?>
 
Werbung:
Werbung:
Moin,
das mit regex zu machen sollte zwar auch gehen, ist aber auf jeden Fall nicht die schönste Lösung
hab mal ein wenig rumprobiert, also ich würde das vermutlich wie folgt machen:
PHP:
$Doc = DOMDocument::loadHTMLFile('test.html');
$td_values = array();
$tr_num = 0;
foreach($Doc->getElementById('list')->childNodes as $tr){
  foreach($tr->childNodes as $td){
   if ($td->nodeName == 'td'){
    $td_values[$tr_num][] = $td->nodeValue;
   }
  }
  $tr_num++;
}
Da kannst da ja ganz normal auf das Array zugreifen, oder schon in der foreach irgendwas damit machen.
Musst deiner Table aber noch ne id verpassen dafür, damit du per getElementById direkt drauf zugreifen kannst (in dem Fall list)
 
Zurück
Oben