2016-04-27 15 views
1

In HTML-Seite, ich HTML-Kommentare wie diesePHP Wie die Preg-Gruppen auf "Nicht-Capture" (?: ...)

$contentHTML = preg_replace("#(?=<!--)([\s\S]*?)-->#", "", $contentHTML); 

Aber auf einer großen Seite für preg_replace entfernen, I "PHP Schwerer Fehler: Erlaubte Speichergröße ..."

Vielleicht würde eine Lösung, die nicht übereinstimmende Gruppe verwenden, um das Erfassen von Text zu vermeiden? Konnte jemand erklären, wie Gebrauch on-zusammenpassende Gruppe ?:

oder wie kann ich HTML Kommentare in der großen Seite ohne preg_replace unterdrücken?

Antwort

2

entrollen Sie einfach die Regex als

$contentHTML = preg_replace("#<!--[^-]*(?:-(?!->)[^-]*)*-->#", "", $contentHTML); 

die regex demo See. Comapre mit yours nehmen etwa 3 mal so viele Schritte wie meins mit einem sehr kurzen Beispiel.

Details:

  • <!-- - Beginn Kommentar
  • [^-]* - 0+ nicht -
  • (?:-(?!->)[^-]*)* - 0+ Sequenzen von -, die nicht mit -> gefolgt wird und dann 0+ nicht - s
  • --> - Kommentar Ende