Regulärer Ausdruck – ein reguläres PHP-Übereinstimmungsmuster lösen?

WBOY
Freigeben: 2016-08-04 09:19:25
Original
1278 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

Aber es gibt zwei Situationen, die nicht zusammenpassen

<code><td>
            
                内容
                
            
        </td></code>
Nach dem Login kopieren
Nach dem Login kopieren

und

<code><td class="sorting_1">
            未付
            
            
            
            
            
            
            
            
            
        </td></code>
Nach dem Login kopieren
Nach dem Login kopieren

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.

Antwortinhalt:

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>
Nach dem Login kopieren
Nach dem Login kopieren

Aber es gibt zwei Situationen, die nicht zusammenpassen können

<code><td>
            
                内容
                
            
        </td></code>
Nach dem Login kopieren
Nach dem Login kopieren

und

<code><td class="sorting_1">
            未付
            
            
            
            
            
            
            
            
            
        </td></code>
Nach dem Login kopieren
Nach dem Login kopieren

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

verwenden
<code>\s
匹配任意的空白符
\S
匹配任意不是空白符的字符</code>
Nach dem Login kopieren

Ziehen Sie Schlussfolgerungen aus einem Beispiel und ordnen Sie td der Klasse

zu
<code>/<td[\s\S]*?>([\s\S]+?)<\/td>/</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ich bin nicht sehr gut darin, aber ich sollte es schaffen

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage