Reguläre Ausdrücke

Fluctuator

Mitglied
Hallo,

ich möchte mittels preg_match_all aus einer Zeile den Typ Auslesen, z.B.:

<tr><td>Kartentyp:</td><td> Creature Lhurgoyf</td></tr>

Als Ergebnis soll "Creature" herauskommen.Mit
Code:
preg_match_all('/(Kartentyp:<\/td><td>)(\sCreature)(<)/U')
funktioniert es aber leider nicht.Weiß jemand wo der Fehler liegt?
 
In dem Regex hast du den Figurnamen (Lhurgoyf) nicht berücksichtigt.

Code:
'/(Kartentyp:<\/td><td>)(\sCreature)(.*)(<)/U'

würde laut regexcoach aber gehen
 
Wenn du es mal so Probierst:
PHP:
<?
$text ="<tr><td>Kartentyp:</td><td> Creature Lhurgoyf</td></tr>";
preg_match_all('#Kartentyp:<\/td><td>(.*)<\/td><\/tr>#U',$text,$x);
echo $x[1][0];
?>

Habe gerade gelsen, das nur Creature da stehen soll. Hier der passende Code dazu.
PHP:
<?
$text ="<tr><td>Kartentyp:</td><td> Creature Lhurgoyf</td></tr>";
$x = preg_replace("#Kartentyp:<\/td><td>(.*)[[:space:]](.*)#","$1",$text);
echo $x;
?>
 
Zuletzt bearbeitet:
Alles klar. So wie ihr es beschrieben habt funktuniert es. Danke. Jetzt hab ich nur noch das Problem, daß der Typ unterschiedlich sein kann, und alles etwas komplizierter wird, z.B.:

HTML:
<tr><td>Kartentyp:</td><td> Creature Lhurgoyf</td></tr>
<tr><td>Kartentyp:</td><td> Instant </td></tr>
<tr><td>Kartentyp:</td><td> Enchant Creature </td></tr>

Um alles auszulesen, hab ich mal folgendes probiert:

Code:
preg_match_all('/(Kartentyp:<\/td><td>)((\s|Artifact|Basic|Creature|Enchant|Enchantment|Equipment|Instant|Interrupt|Land|Legendary|Player|Sorcery|Token|World)*)(<)/U', $data, $array['type']);

Nun kann ich alles auslesen bis auf "Creature" :mad: . Aber eigentlich müßte er doch "Creature" auch auslesen, oder nicht?.
 
Zuletzt bearbeitet:
Du hast eine Auswahlmöglichkeit an Begriffen, dass heisst, er erkennt immer nur einen der Begriffe.
Im letzten Beispiel kommen aber 2 der möglichen Begriffe vor. Wenn du den Gesamtbegriff brauchst, dann musst du das so schreiben wie fanste es in seinem ersten Beispiel beschrieben hat.
 
Zurück