16.4 Zwischen gierigem und nicht-gierigem Matching wählen

Problem

Sie möchten mit Ihrem Muster die kleinstmögliche Übereinstimmung finden und nicht die größtmögliche.

Lösung

Fügen Sie ein ? nach einem Quantifikator ein, um diesen Teil des Musters zu modifizieren:

// Alle fett geschriebenen Abschnitte finden.
preg_match_all('#<b>.+?</b>#', $html, $matches);

Oder verwenden Sie den Muster-Modifikator U, um alle Quantifikatoren von gierig auf nicht-gierig umzuschalten:

// Alle fett geschriebenen Abschnitte finden.
preg_match_all('#<b>.+</b>#U', $html, $matches);

Diskussion

Standardmäßig entspricht das Verhalten von regulären Ausdrücken in PHP dem, was man als gierig (greedy) bezeichnet. Dies bedeutet, dass ein Quantifikator stets versucht, eine Übereinstimmung ...

Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.