Teil 5 Text- Sonderzeichen umwandeln


Konvertierung der Texte und ersetzen von speziellen HTML Characters in Unicode unter Nutzung so genannter Modifikatoren bzw. Modifier im Templateparser Smarty

Teil 5 - Deutsche Sonderzeichen wie ü und ä müssen zwingend in HTML konforme Zeichen umgewandelt werden. Die Smarty Modifier erlauben solche manipulationen im Template.

Deutsche Sonderzeichen

Deutsche Texte die Sonderzeichen wie "öäü" enthalten, können mit der Template Engine Smarty und dem Templatepattern dieser Beitragsreihe noch nicht automatisch konvertiert werden, damit Sie dies nicht ständig beim schreiben des Beitrags von Hand erledigen müssen, sollte Sie das folgende Coding in Ihre index.php übernehmen.

index.php

Fügen Sie in die Datei index.php eine neue Funktion ein (übrigens, sehen Sie mir bitte nach wenn ich diese immer als Methoden bezeichne, denn nichts anderes sind Funktionen, es sind Methoden!):

01  <?php
02    require_once('libs/Smarty.class.php');
03    $smarty = new Smarty();
04  
05    function remove_special_chars ($text) {
06      $specialChars   = array("ö",     "ä",     "ü",     "Ö",     "Ä",     "Ü",     "ß");
07      $specialReplace = array("ö","ä","ü","Ö","Ä","Ü","ß");
08      $text = str_replace($specialChars, $specialReplace, $text);
09      return $text;
10    }
11  ...
12  ... <- den Rest des Codes kennen Sie aus dem vorherigen Artikel

Code

Diese neue Funktion nimmt einen String entgegen und wandelt alle speziellen Zeichen aus dem ARRAY $specialChars in die korrespondierenden Zeichen des Arrays $specialReplace um.

artikel.tpl

Damit die Template Engine Smarty die neue Methode nutzt, muss diese im Artikel-Template mit angegeben werden. editieren Sie die artikel.tpl im Ordner templates und stellen Sie jeder Template-Variable mittels Pipe "|" die neue Methode nach, dies nennt sich Modifikator.

...  ...
021  <body>
...  ...
029  <div class="jumbotron">
030    <h1 class="display-4">{$titel_tmpl|remove_special_chars}</h1>
031    <hr class="my-4">
032    <p class="lead">{$anleser_tmpl|remove_special_chars}</p>
033  </div>
...
050  </body>
051  </html>

Code

Smarty ruft beim interpretieren des Templates die neue Methode auf und übergibt ihr automatisch den Inhalt des Platzhalters. Die Syntax:

{$anleser_tmpl|remove_special_chars}

Code

ruft folglich die neue Methode (function) remove_special_chars() in der Datei index.php auf und übergibt ihr den Inhalt aus der Variablen $anleser_tmpl. Die Methode liefert den bereinigten String ohne "öüä" mit ö ü und ä an ihren Aufrufer zurück.

Anmerkung - Durch eigene "functions" (Methoden) können Sie Ihrem Template mehr Intelligenz verleihen und machen es leistungsfähiger. Neue "functions" können Sie mit Pipe | anfügen, Sie können sogar weitere "functions" mit dem Pipe-Operator anhängen {$anleser_tmpl|function_a|function_b|function_c}, Smarty wird sie alle abarbeiten.


Mein Name ist Oliver Lohse. Ich bin diplomierter Wirtschafts-Informatiker und Organisations-Programmierer in verschiedenen Sprachen bzw. Markup-Dialekten, z.B. Java, JEE, COBOL, PHP, Python, MySQL, HTML, CSS, ANSI C, Lisp, Rexx, JavaScript, Scheme, ActionScript 2.0, Maschinensprache, Assembler und JCL. Seit mehr als 25 Jahren arbeite ich in einem großen Softwareunternehmen für Versicherungen in Hannover Niedersachsen.

FlightCMS
2024-01-28
Beitrag,Sortieren,Datum,Titel,ASC,DESC
post
Kontakt@Oliver-Lohse.de

Datenschutz

Die Webseite verwendet keinerlei Tracking- oder Speichermechanismen, die einen Rückschluss auf das Leserverhalten und Ihre Identität zulassen. Die Webseite verwendet keine Cookies, denn Cookies haben einen schlechten Ruf.

Impressum

CMSWorkbench ist eine Entwicklerseite über meine Arbeit im Bereich der Content Management Systeme. Die vielen Codeschnipsel sind im wesentlichen als kleine Notizzettel zu werten als das es ausgereifte Beiträge wären.