Ich habe folgende HTML:PHP Rückkehr mehr Übereinstimmungen gleiche RegexMuster
<tr valign="top">
<td>Name:</td>
<td>John Doe</td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr valign="top">
<td>Address:</td>
<td>71 view st, Fitchburg, MA 01420</td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr valign="top">
<td>Phone:</td>
<td>978-345-5391</td>
</tr>
<tr><td colspan="2"> </td></tr>
<tr>
<td>Email:</td>
<td>[email protected]</td>
</tr>
Ich mag die Werte von Name
, Phone
und Email
innerhalb derselben RegexMuster erfassen, so etwas wie:
$pattern = "/Name:<\/td>\s*<td>(.*)<\/td>.*Address:<\/td>\s*<td>(.*)<\/td>.*card ([0-9].*)<\/td>/m";
Wenn ich es separat versuche, wie zum Beispiel:
es ist okay. Vielleicht verstehe ich nicht, wie REGEX funktioniert, ist es nicht möglich, mehr Übereinstimmungen in einem einzigen Muster zu haben?
Parsing HTML-Markup mittels eines regulären Ausdrucks ist in der Regel kein guter Ansatz. Es ist sehr unzuverlässig und komplex. Sehen Sie sich stattdessen einen 'DOM-Parser' an. Das sind die richtigen Werkzeuge für solche Aufgaben. – arkascha
Ich weiß, ich kann nicht DOM verwenden, weil meine Datei keine vollständigen HTML-Tags hat, nur TABLE und so weiter, so dass ich nicht auf DOM zugreifen kann. – bsteo
Das bedeutet nicht, dass Sie keinen DOM-Parser verwenden können! Betten Sie diese Tabellendefinition einfach in ein minimalistisches HTML-Framework ein. – arkascha