Hat denn keiner eine Lösung... oder zumindest eine Idee?
Hallo,
ich arbeite mich jetzt seit exakt zwei Tagen in reguläre Ausdrücke ein und merke dabei schon deutlich, dass es eine Wissenschaft für sich ist. Mein exaktes Problem ist folgendes:
Ich möchte aus einem HTML-Quellcode alle Nicknames an bestimmten Positionen extrahieren, ohne vorher zu wissen, welche Nicknames dort stehen. Der entsprechende Auszug aus dem Quellcode liest sich so:
oderHTML-Code:oppos"> <strong>Tarson</strong><br /> <i>free</i> </div>
(Tarson/free/Daha/ilovegame sind die zu findenen Nicknames, welche aber auch komplett anders lauten könnten. Die Nicknames VOR dem <br /> können per <strong> eingefasst sein, die dahinter per <strong> ODER <i>. Dort, wo oben Leerzeichen stehen, ist im Originalquelltext beliebig langer Whitespace mit Tabs/Zeilenumbrüchen)HTML-Code:oppos"> DaHa<br /> <strong>ilovegame</strong> </div>
Mein RegEx-Ausdruck sieht so aus:
Was er findet ist Spieler 1 - egal ob mit <strong> eingefasst oder nicht. Spieler 2 findet er nur, wenn er weder von <strong> noch von <i> eingefasst ist.PHP-Code:$s1 = 'oppos">[^\w]*'; // Div match_pool_oppos
$s2 = '(<strong>)?'; //<strong>
$s3 = '([^<]*)'; // Spieler 1
$s4 = '(<\/strong>)?'; // </strong>
$s5 = '<br.\/>[^\w]*'; // <br>
$s6 = '(<strong>|<i>)?'; // <strong> oder <i>
$s7 = '([^<]*)'; // Spieler 2
$s8 = '(<\/strong>|<\/i>)?'; // </strong> oder </i>
$s9 = '<'; // </div>
$spielesuche = "/".$s1.$s2.$s3.$s4.$s5.$s6.$s7.$s8.$s9.$s10."/isxU";
preg_match_all($spielesuche,$datei,$spiele_raw);
Frage: Wie finde ich nun Spieler 2, die mit Tags eingefasst sind?
Hat denn keiner eine Lösung... oder zumindest eine Idee?
warum so kompliziert?
PHP-Code:$hits = array();
$string = "<div class=\"match_pool_oppos \"> <strong>Tarson</strong><br /> <i>free</i> </div>";
$string.= "<div class=\"match_pool_oppos \"> DaHa<br /> <strong>ilovegame</strong> </div>";
preg_match_all("/<div class=\"match_pool_oppos \">(.*)<\/div>/iU", $string, $treffer);
if (is_array($treffer)) {
foreach ($treffer[1] as $val) {
$ar = explode("<br />", $val);
foreach ($ar as $hit) {
$hits[] = strip_tags($hit);
}
}
}
print_r($hits);
Vielen Dank. Das Wissen um die Explode-Funktion war, was mir fehlte, um das einfacher zu lösen. Geht jetzt.
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)