PHP preg_match Leerzeichen und Tabs am Anfang und Ende trennen

lordfritte

Lt. Commander
Registriert
Juli 2006
Beiträge
1.025
Hallo, ich möchte Leerzeichen und Tabs von einer Zeichenkette trennen und das Ergebnis in 3 Gruppen(start, content, end) speichern.

Was ich bisher habe:
PHP:
$str = "  Hallo Welt       ";
$matches = [];
preg_match_all('/(?P<start>\s*)(?P<content>.*)(?P<end>\s*)/i', $str, $matches);
var_dump($matches); exit;

Problem: Die Leerzeichen und Tabs werden nicht am Ende erkannt.

Das Ergebnis:
Code:
array (size=7)
  0 =>
    array (size=2)
      0 => string '   Hallo Welt     ' (length=18)
      1 => string '' (length=0)
  'start' =>
    array (size=2)
      0 => string '   ' (length=3)
      1 => string '' (length=0)
  1 =>
    array (size=2)
      0 => string '   ' (length=3)
      1 => string '' (length=0)
  'content' =>
    array (size=2)
      0 => string 'Hallo Welt     ' (length=15)
      1 => string '' (length=0)
  2 =>
    array (size=2)
      0 => string 'Hallo Welt     ' (length=15)
      1 => string '' (length=0)
  'end' =>
    array (size=2)
      0 => string '' (length=0)
      1 => string '' (length=0)
  3 =>
    array (size=2)
      0 => string '' (length=0)
      1 => string '' (length=0)
 
Code:
^(?<start>\s*)(?<content>.*?)(?<end>\s*)$
.* ist standardmäßig greedy, .*? macht es ungreedy.
 
Zurück
Oben