Heim > Backend-Entwicklung > PHP-Tutorial > PHPs preg_match_all() kann nicht mit der angegebenen Zeichenfolge übereinstimmen?

PHPs preg_match_all() kann nicht mit der angegebenen Zeichenfolge übereinstimmen?

WBOY
Freigeben: 2016-09-29 09:33:00
Original
1602 Leute haben es durchsucht

Demo:

<code>$html='<div class="p-img"><a href="url"></a></div><div class="p-img"><img src="xx"></div>';

preg_match_all('/<div class="p-img">(.*?)<\/div>/', $html, $out);

var_dump($out);
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich hoffe, dass die Zielzeichenfolge $html mit

übereinstimmt, aber ich habe festgestellt, dass die letzte Ausgabe $out immer leer ist. Wie kann ich alle Ergebnisse korrekt abgleichen? Ich habe eine Anleitung von einem regelmäßigen Experten für Regelmäßigkeit erhalten


Zusätzliche Erklärung nach dem Finden der Antwort:

Verwenden Sie den Crawler, um die Dom-Struktur aus dem Internet abzurufen. Sie enthält viele Leerzeichen und Zeilenumbrüche. Wenn Sie mit dem Ziel-HTML übereinstimmen möchten, müssen Sie nach dem regulären Ausdruck das Musterkorrektursymbol hinzufügen

<code>preg_match_all('/<div class="p-img">(.*?)<\/div>/is', $html, $out);</code>
Nach dem Login kopieren
Nach dem Login kopieren
/ich ignoriere die Groß-/Kleinschreibung

/s behandelt die Zeichenfolge als einzelne Zeile und das Zeilenumbruchzeichen als gewöhnliches Zeichen

Antwortinhalt:

Demo:

<code>$html='<div class="p-img"><a href="url"></a></div><div class="p-img"><img src="xx"></div>';

preg_match_all('/<div class="p-img">(.*?)<\/div>/', $html, $out);

var_dump($out);
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Ich hoffe, dass die Zielzeichenfolge $html mit
übereinstimmt, aber ich habe festgestellt, dass die letzte Ausgabe $out immer leer ist. Wie kann ich alle Ergebnisse korrekt abgleichen? Ich habe eine Anleitung von einem regelmäßigen Experten für Regelmäßigkeit erhalten


Zusätzliche Erklärung nach dem Finden der Antwort:

Verwenden Sie den Crawler, um die Dom-Struktur aus dem Internet abzurufen. Sie enthält viele Leerzeichen und Zeilenumbrüche. Wenn Sie mit dem Ziel-HTML übereinstimmen möchten, müssen Sie nach dem regulären Ausdruck das Musterkorrektursymbol hinzufügen

/ich ignoriere die Groß-/Kleinschreibung
<code>preg_match_all('/<div class="p-img">(.*?)<\/div>/is', $html, $out);</code>
Nach dem Login kopieren
Nach dem Login kopieren

/s behandelt die Zeichenfolge als einzelne Zeile und das Zeilenumbruchzeichen als gewöhnliches Zeichen

Ausgabe:

<code>$html='<div class="p-img"><a href=\'url\'></div><div class="p-img"><img src=\'xx\'></div>';

preg_match_all('/<div\sclass="p\-img">(.*?)<\/div>/is', $html, $out);

var_dump($out);</code>
Nach dem Login kopieren

Was soll ich sagen? Das
<code>array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(39) "<div class="p-img"><a href='url'></div>"
    [1]=>
    string(39) "<div class="p-img"><img src='xx'></div>"
  }
  [1]=>
  array(2) {
    [0]=>
    string(14) "<a href='url'>"
    [1]=>
    string(14) "<img src='xx'>"
  }
}</code>
Nach dem Login kopieren
in Ihrem $html sollte

sein und / sollte nicht in /' maskiert werden 'Ich kann es nicht ausführen. Wissen Sie, ob es ein Problem mit Ihrer Grammatik oder Regelmäßigkeit ist?

Die Antwort ist, wo $html definiert ist.

-Nummer muss maskiert werden

Verwandte Etiketten:
php
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