(Hallo|Hi(ho)|Tag) MudGuard,
(?:.|\n|\r)
... oder doch eher
[.\r\n]
?
Wäre das nicht einfacher? ... und schneller?Es ist vor allem etwas vollkommen anderes.
(?:.|\n|\r) matcht ein beliebiges Zeichen, so wie es auch (?:.|[\r\n]) tut.[.\r\n] dagegen matcht ein Carriage Return oder ein Line-Feed oder einen Punkt.
Mist! Ich wollte mich gerade selbst korrigieren, aber du warst schneller ...
Und weil wir gerade bei schneller sind: Am schnellsten ist wohl /[\x0-\xff]/, noch vor /./s. Zumindest legt das ein kleiner Test nahe, den ich mal kurz gemacht habe. Die Ergebnisse für jeweils 10000 preg_match_all()-Aufrufe:
411 ms -- for /[\x0-\xff]/
993 ms -- for /./s
1603 ms -- for /(.|\n)/
1407 ms -- for /(?:.|\n)/
// runtime() holt das Ergebnis von microtime() als float
// oder die Zeitdifferenz zum übergebenen Wert als float
// $string enthaelt auch "\r" und "\n"
$max = 1000;
$elapsed = runtime();
for ($i = $max; $i; $i--) {
preg_match_all('/./s', $string, $matches);
... // das ganze hier 10 mal
preg_match_all('/./s', $string, $matches);
}
$elapsed = runtime($elapsed);
debug_writefln('%d ms -- for /./s', $elapsed * 1000);
MffG
EisFuX