Heim > Artikel > Backend-Entwicklung > Regulärer Ausdruck – ein reguläres PHP-Übereinstimmungsmuster lösen?
Verwenden Sie cURL, um eine Seite mit einer Datentabelle abzurufen. Solange Sie alle Zellen unter TR erhalten, verwenden Sie die folgende Methode
<code>$content = 内容; preg_match_all('/<td>(.*?)<\/td>/',$content,$res);</code>
Aber es gibt zwei Situationen, die nicht zusammenpassen
<code><td> 内容 </td></code>
und
<code><td class="sorting_1"> 未付 </td></code>
Ich weiß nicht, warum Zellen mit vielen Leerzeichen und Zellen mit Klassen nicht abgeglichen werden können? Da ich nicht weiß, wie man reguliert, muss ich ein Muster finden, das vollständig mit dem TD übereinstimmt. Es gibt noch eine weitere Frage. Es gibt zwei Tabellen auf der Seite, die zum Filtern von Daten unter verschiedenen Bedingungen verwendet werden, und die andere zum Speichern von Daten.
Verwenden Sie cURL, um eine Seite mit einer Datentabelle abzurufen. Solange Sie alle Zellen unter TR erhalten, verwenden Sie die folgende Methode
<code>$content = 内容; preg_match_all('/<td>(.*?)<\/td>/',$content,$res);</code>
Aber es gibt zwei Situationen, die nicht zusammenpassen können
<code><td> 内容 </td></code>
und
<code><td class="sorting_1"> 未付 </td></code>
Ich weiß nicht, warum Zellen mit vielen Leerzeichen und Zellen mit Klassen nicht abgeglichen werden können? Da ich nicht weiß, wie man reguliert, muss ich ein Muster finden, das vollständig mit dem TD übereinstimmt. Es gibt noch eine weitere Frage. Es gibt zwei Tabellen auf der Seite, die zum Filtern von Daten unter verschiedenen Bedingungen verwendet werden, und die andere zum Speichern von Daten.
. Zeilenumbrüche können im Einzelzeilenmodus nicht abgeglichen werden.
Sie können
<code>\s 匹配任意的空白符 \S 匹配任意不是空白符的字符</code>
Ziehen Sie Schlussfolgerungen aus einem Beispiel und ordnen Sie td der Klasse
zu<code>/<td[\s\S]*?>([\s\S]+?)<\/td>/</code>
Um eine der Tabellen abzugleichen, können wir auch Schlussfolgerungen aus einem Beispiel ziehen. Zuerst müssen wir die Tabelle aus allen Inhalten in ein Array einordnen.
<code>/<table[\s\S]*?>([\s\S]+?)<\/table>/</code>
Dann kommt es darauf an, welche Nummer Sie möchten, und verwenden Sie dann die oben genannte reguläre Matching-Nummer.
Wie ich bereits sagte: Ziehen Sie Schlussfolgerungen aus einem Beispiel!
<code>$pattern = "/<td.*?>([\s\S]*?)<\/td>/";</code>
Ich bin nicht sehr gut darin, aber ich sollte es schaffen