PHP preg_match Leerzeichen und Tabs am Anfang und Ende trennen

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
965
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