Funktion str_repeat() - string wiederholen lassen

Bei der Verarbeitung von Zeichenketten kann es notwendig sein, gewisse strings wiederholen zu lassen. So kann man manche Textbestandteile durch wiederholende Zeichen schmücken, z.B. in der Form +++Text+++. Auch andere Anwendungsfälle sind denkbar. Für solche Wiederholungen kann man die Funktion str_repeat() verwenden. Innerhalb der runden Klammern werden die folgenden Parameter angegeben.

  1. Die Zeichenkette, die wiederholt werden soll (string).
  2. Die Anzahl der Wiederholungen (multiplier).

Beim folgenden Beispiel wird das Pluszeichen 5x wiederholt.

<?php

// Ausgabe +++++
echo str_repeat('+', 5);

?>

Der zweite Parameter (multiplier) muss größer als 0 sein. Ansonsten gibt die Funktion eine leere Zeichenkette zurück.

<?php

// Ausgabe
echo str_repeat('+', 0);

?>

Die Angabe mehrerer Zeichen ist ebenfalls möglich. Beim folgenden Beispiel wird +- wiederholt.

<?php

// Ausgabe +-+-+-+-+-
echo str_repeat('+-', 5);

?>

Eigene Funktion mit Trennzeichen erstellen

Falls man innerhalb der Zeichenkette ein Trennzeichen möchte, sodass das Trennzeichen nicht das letzte Zeichen ist, kann man eine eigene Funktion schreiben. Das ist notwendig, weil mit str_repeat() lediglich die Anzahl der Zeichen wiederholt wird und es keine Möglichkeit gibt, das letzte Zeichen entfallen zu lassen. Beim folgenden Beispiel wird A-A-A-A-A- ausgegeben. Das letzte Minuszeichen entfällt dabei nicht, sodass man das Minuszeichen nicht als Trenner betrachten kann.

<?php

// Ausgabe A-A-A-A-A-
echo str_repeat('A-', 5);

?>

Die eigene Funktion könnte wie folgt sein, damit das letzte Minuszeichen entfällt.

<?php

function str_repeat_separator ($str, $multiplier, $separator = '')
{

  if ($multiplier > 0)
  {
    return str_repeat ($str . $separator, $multiplier - 1) . $str;
  }
  else
  {
    return '';
  }

}

// Ausgabe A-A-A-A-A
echo str_repeat_separator (A, 5, '-');

?>

Mit dieser Funktion wäre es möglich, als dritten Parameter ein Trennzeichen anzugeben. Falls der dritte Parameter nicht angegeben wird, gilt als Trennzeichen ein leerer String und der Rückgabewert ist wie bei str_repeat().