Regulärer Ausdruck. Problem...
fahndung
- php
Hallo,
ich möchte mittels regulären Ausdruck Teilstrings aus einem HTML-String filtern.
...
<tr>
<td>Subject:</td>
<td><input type=field size=40 name='data[subject]' value='Betreff'></td>
</tr>
<tr>
<td>Text:</td>
<td><textarea name="data[text]" rows=10 cols=40 wrap=physical>Hallo</textarea></td>
</tr>
...
Ein Ausdruck soll mir den Inhalt von value des Input-Elements liefern (-> Betreff),
der andere Ausdruck soll mir den Textinhalt der textarea liefern (-> Hallo). Mit
welchem regulären Ausdruck lässt sich das lösen? Probiere schon relativ lange und
komme leider auf keine Lösung...
Danke für die Unterstützung,
Daniel F.
Hallo Daniel,
generell empfiehlt sich bei solchen Problemstellungen ein HTML-Paser, wie in die DOM-Erweiterungen PHPs bereitstellen. Kannst Du damit glücklich werden, oder muss es unbedingt ein RegExp sein?
Gruß aus Berlin!
eddi
generell empfiehlt sich bei solchen Problemstellungen ein HTML-Paser, wie in die DOM-Erweiterungen PHPs bereitstellen. Kannst Du damit glücklich werden, oder muss es unbedingt ein RegExp sein?
Gruß aus Berlin!
eddi
Hallo Eddi,
kein Problem. Wenn Du mir ein Beispiel dafür geben könntest...
Gruß,
Daniel F.
Re:
kein Problem. Wenn Du mir ein Beispiel dafür geben könntest...
$doc =new DOMDocument();
$doc->loadHTMLFile("filename.html");
$inp =$doc->getElementsByTagName('input');
// so erreichst Du dann den Attributenknoten "value" und dessen Wert:
echo $inp->item(0)->attributes->getNamedItem("value")->nodeValue;
Gruß aus Berlin!
eddi
Falls Du ein zum geposteten Beispiel 1 zu 1 passendes Suchmuster nutzen möchtest:
~<tr>\s*<td>Subject:</td>\s*<td><input[^>]+value='([^']*)'[^>]*></td>\s*</tr>\s*<tr>\s*<td>Text:</td>\s*<td><textarea[^>]*>([^<]*)</textarea></td>\s*</tr>~s
Zu schnellen Austesten von regulären Ausdrücken ist im übrigen die frei verfügbare Win.Version des RegExCoach eine gute Hilfe.
PS: Das Muster habe jetzt ich allerdings nur im genannten RegExCoach getestet, da es allerdings sehr einfach ist, gehe ich davon aus das preg_match/_all damit auch klar kommen.)