Formatierungen

Formatierungen rex_formatter

Der rex_formatter formatiert Strings zu einem bestimmten Formattyp. Eine komplette Liste findet sich in der https://redaxo.org/api/master/source-class-rex_formatter.html

Aufruf von rex_formatter

Folgendermaßen lässt sich der rex_formatter generell aufrufen:

$formattedString = rex_formatter::( string $value, string 'formatType', string 'format'); 
Parameter Erklärung
$value Die Variable, die formatiert werden soll
formatType Die Formatierung, die angewandt werden soll
format Das Format, in der die Variable ausgegeben werden soll

Ein einfaches Beispiel

$date = 'March 9. 2018 10:31 PM';
echo rex_formatter::format($date,'date','Y.m.d H:i');
// gibt aus: 2018.03.09 22:31

Formattypen

Folgende Formattypen stehen zur Verfügung:

date

Formatiert den übergebenen String in ein Datum mit dem gewählten Format. Die zu verwendenden Format-Zeichen finden sich im date-Manual von PHP.

$value = 'March 9. 2018 10:31 PM';
echo rex_formatter::format($value,'date','Y.m.d H:i');
// gibt aus: 2018.03.09 22:31

strftime

Formatiert den übergebenen String in das gewählte Format. Dabei ist es möglich, einen Timestamp oder einen Datetime-String zu übergeben. Die zu verwendenden Format-Zeichen finden sich im strftime-Manual von PHP.

$datetime = 'March 9. 2018 10:31 PM';
echo rex_formatter::format($datetime,'strftime','%a KW %V');
// gibt aus: Fri KW 10

$timestamp = '1520631060';
$formattedString = rex_formatter::format($timestamp,'strftime','%a KW %V');
// gibt aus: Fri KW 10

number

Formatiert das übergebene Value in eine Nummer mit dem gewählten Format. Das übergebene Format muss als Array angelegt sein, wie im number_format-Manual von PHP angegeben. Der voreingestellte Standard, wenn kein $number_format übergeben wird, ist array(2, ',', ' ').

$number = '12345.6789';
$numberFormat = [2,",","."];
echo rex_formatter::format($number,'number',$numberFormat);
// gibt aus: 12.345,68

$formattedString = rex_formatter::number($number,$numberFormat);
// gibt aus: 12.345,68
$number_format = [decimal_numbers 2, decimals_point ',', thousands_seperator ' ']

Number-Format-Parameter

Parameter Erklärung
decimal_numbers Die Anzahl an Stellen, die hinter dem Komma ausgegeben werden sollen
decimals_point Das Trennzeichen für Komma-Zahlen
thousands_sepearator Das Trennzeichen für Tausender-Trennung

bytes

Formatiert das übergebene Value zu einem String, bei dem die Größe angehängt wird. Das Format definiert, wie die Nummer angezeigt werden soll (s. number). Je nach Größe des übergebenen Values werden automatisch folgende Byte-Größen angehängt: 'B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'

$bytes = '1234567890';
$numberFormat = [2,",","."];
echo rex_formatter::format($bytes,'bytes',$numberFormat);
// gibt aus: 1,15 GiB

echo rex_formatter::bytes($bytes,$numberFormat);
// gibt aus: 1,15 GiB

sprintf

Formatiert / ersetzt das übergebene Value in das gewählte Format. Fallback ist %s, wenn kein Format angegeben wurde. Beim rex_formatter kann immer nur ein Value formatiert werden. Will man verschiedene Values in einem String ersetzen / formatieren, lohnt es sich eher, die sprintf-Funktion direkt von PHP zu nutzen. Alle weiteren Formate können im sprintf-Manual eingesehen werden.

$format = 'REDAXO ist %s';
$whatitis = 'einfach, flexibel, sinnvoll!';
echo rex_formatter::format($whatitis,'sprintf',$format);
// gibt aus: REDAXO ist einfach, flexibal, sinnvoll!

echo rex_formatter::sprintf($whatitis,$format);
// gibt aus: REDAXO ist einfach, flexibal, sinnvoll!

nl2br

Formatiert das übergebene Value in einen String mit <br>, wenn das Value eine new line enthält, z.B. \n oder PHP_EOL. Achtung: Wenn rex_formatter::format() genutzt wird, muss hier zum Schluss ein leeres Format '' übergeben werden.

$nl2br = 'REDAXO
ist
einfach,
flexibel,
sinnvoll!';

echo rex_formatter::format($nl2br,'nl2br','');
/* gibt aus:
REDAXO<br>
ist<br>
einfach,<br>
flexibel,<br>
sinnvoll!
*/

$nl2br = 'REDAXO'.PHP_EOL.'ist'.PHP_EOL.'einfach,'.PHP_EOL.'flexibel,'.PHP_EOL.'sinnvoll!';
echo rex_formatter::nl2br($nl2br);
/* gibt aus:
REDAXO<br>
ist<br>
einfach,<br>
flexibel,<br>
sinnvoll!
*/

truncate

Schneidet das übergebene Value nach der eingestellten Länge length im Format-Array ab und hängt die bei etc definierten Trennzeichen an. Der Parameter break_words im Format-Array ist Boolean (false/true). Standard-Einstellung für das Format bei truncate ist array('length' => 80, 'etc' => '...', 'break_words' => false).

$truncateThis = 'REDAXO ist einfach, flexibel, sinnvoll!';

echo rex_formatter::format($truncateThis,'truncate',array('length' => '18','etc' => '!!!', 'break_words' => false));
// gibt aus: REDAXO ist!!!

echo rex_formatter::truncate($truncateThis,array('length' => '9','etc' => '!!!', 'break_words' => false));
// gibt aus: REDAXO!!!

truncate Format-Array

Parameter Erklärung
length Die Länge, auf die das Value gekürzt werden soll - Standard ist 80
etc Die anzuhängenden Trennzeichen - Standard ist ...
break_words Boolean false/true - Ob die Länge hart berücksichtigt und innerhalb von Wörtern abgeschnitten werden soll - Standard ist false

widont

Sollte ein Wort allein in einer Zeile vorkommen, wird dies unterbunden. Das letzte Leerzeichen wird durch ein geschütztes Leerzeichen ersetzt, so dass die letzten beiden Worte in die nächste Zeile rutschen. Achtung: Wenn rex_formatter::format() genutzt wird, muss hier zum Schluss ein leeres Format '' übergeben werden.

$widow = 'REDAXO ist einfach, flexibel, sinnvoll!';

echo rex_formatter::format($widow,'widont','');
// gibt aus (im Quelltext): REDAXO ist einfach, flexibel,&#160;sinnvoll!

echo rex_formatter::widont($widow);
// gibt aus (im Quelltext): REDAXO ist einfach, flexibel,&#160;sinnvoll!

version

Formatiert den übergebenen Versions-String. Die zur Verfügung stehenden Formate können im sprintf-Manual eingesehen werden.

$version = 5.5.1;
echo rex_formatter::format($version,'version','%d.%d');
// gibt aus: 5.5

echo rex_formatter::version($version,'%s-%s');
// gibt aus: 5-5

url

Formatiert das übergebene Value als Link-Url. Es können über den Format-Teil zusätzliche Attribute (wie z.B. target="_blank") sowie anzuhängende Parameter (wie z.B. subject=Hello%20Friend) übergeben werden.
Der Format-Teil ist als Array anzugeben in der Reihenfolge array('attr' => '', 'params' => ''). Die attr sowie die params sind als String in dem Array anzugeben.

$url = 'www.redaxo.org';
echo rex_formatter::format($url,'url',array('attr' => 'target="_blank" class="whatever"','params' => 'subject=Hello%20Friend'));
// gibt aus (im Quelltext): <a href="http://www.redaxo.org?subject=Hello%20Friend" target="_blank" class="whatever">http://www.redaxo.org</a>

echo rex_formatter::url($url);
// gibt aus (im Quelltext): <a class="extern" href="http://www.redaxo.org">http://www.redaxo.org</a>

email

Formatiert das übergebene Value als E-Mail-Link in htmlspecialchars. Es können über den Format-Teil zusätzliche Attribute (wie z.B. target="_blank") sowie anzuhängende Parameter (wie z.B. subject=Hello%20Friend) übergeben werden.
Der Format-Teil ist als Array anzugeben in der Reihenfolge array('attr' => '', 'params' => ''). Die attr sowie die params sind als String in dem Array anzugeben.

$email = 'info@redaxo.org';
echo rex_formatter::format($email,'email',array('attr' => 'target="_blank" class="whatever"','params' => 'subject=Hello%20Friend'));
// gibt aus (im Quelltext): <a href="mailto:info@redaxo.org?subject=Hello%20Friend" target="_blank" class="whatever">info@redaxo.org</a>

echo rex_formatter::email($email);
// gibt aus (im Quelltext): <a href="mailto:info@redaxo.org">info@redaxo.org</a>

custom

Über custom-Format lässt sich z.B. eine Funktion aufrufen, die dann die gewünschte Formatierung ausführt. Es können auch direkt PHP-Funktionen aufgerufen werden.

function test($param = '') {
    return $param . ' ist einfach, flexibel, sinnvoll!';
}

$custom = 'REDAXÖ';
echo rex_formatter::format($custom,'custom','test');
// gibt aus: REDAXÖ ist einfach, flexibel, sinnvoll!

echo rex_formatter::custom($custom,'htmlentities');
// gibt aus (im Quelltext): REDAX&Ouml;