. .

PHP • Maskierungen für Sonderzeichen

PHP - HTML-Entities

Standardkonformer HTML-Code erfordert eine korrekte Ausgabe sämtlicher Literalen, dazu gehören auch und vor allem sogenannte HTML-Entities (Maskierungen für Sonderzeichen).




Spickzettel / Cheat Sheets

Zeichen HTML-Entity Unicode
dezimal
Unicode
hexadezimal
Zeichen HTML-Entity Unicode
dezimal
Unicode
hexadezimal
    ! ! !
" " " " # # #
$ $ $ % % %
& & & & ' ' '
( ( ( ) ) )
* * * + + +
, , , - - -
. . . / / /
0 0 0 1 1 1
2 2 2 3 3 3
4 4 4 5 5 5
6 6 6 7 7 7
8 8 8 9 9 9
: : : ; &#59; &#x003B;
< &lt; &#60; &#x003C; = &#61; &#x003D;
> &gt; &#62; &#x003E; ? &#63; &#x003F;
@ &#64; &#x0040; A &#65; &#x0041;
B &#66; &#x0042; C &#67; &#x0043;
D &#68; &#x0044; E &#69; &#x0045;
F &#70; &#x0046; G &#71; &#x0047;
H &#72; &#x0048; I &#73; &#x0049;
J &#74; &#x004A; K &#75; &#x004B;
L &#76; &#x004C; M &#77; &#x004D;
N &#78; &#x004E; O &#79; &#x004F;
P &#80; &#x0050; Q &#81; &#x0051;
R &#82; &#x0052; S &#83; &#x0053;
T &#84; &#x0054; U &#85; &#x0055;
V &#86; &#x0056; W &#87; &#x0057;
X &#88; &#x0058; Y &#89; &#x0059;
Z &#90; &#x005A; [ &#91; &#x005B;
\ &#92; &#x005C; ] &#93; &#x005D;
^ &#94; &#x005E; _ &#95; &#x005F;
` &#96; &#x0060; a &#97; &#x0061;
b &#98; &#x0062; c &#99; &#x0063;
d &#100; &#x0064; e &#101; &#x0065;
f &#102; &#x0066; g &#103; &#x0067;
h &#104; &#x0068; i &#105; &#x0069;
j &#106; &#x006A; k &#107; &#x006B;
l &#108; &#x006C; m &#109; &#x006D;
n &#110; &#x006E; o &#111; &#x006F;
p &#112; &#x0070; q &#113; &#x0071;
r &#114; &#x0072; s &#115; &#x0073;
t &#116; &#x0074; u &#117; &#x0075;
v &#118; &#x0076; w &#119; &#x0077;
x &#120; &#x0078; y &#121; &#x0079;
z &#122; &#x007A; { &#123; &#x007B;
| &#124; &#x007C; } &#125; &#x007D;
~ &#126; &#x007E;


Weitere hilfreiche Informationen zum Thema Unicode und Tabellen mit Sonderzeichen vieler europäischer Sprachen finden sich unter unicode.e-workers.deunicode.e-workers.de




diese verfluchten Umlaute - ä ö ü „ ‐ œ Ÿ

PHP - und die "verfluchten" Sonderzeichen

ANSI-Zeichen wie, ä ö ü „ ‐ œ Ÿ lassen darauf schlieen, dass der Zeichensatz der Webseite nicht auf utf-8 deklariert ist und diese Zeichen dann als iso-8859-1 Zeichen dargestellt werden.


Also zurück zu den Anfängen. Bei der Erstellung einer Webseite ist die Zeichenkodierung festzulegen, dies geschieht in der 1. Zeile des HTTP-Header und in einer Meta-Tag Anweisung, denn je nach Konfiguration könnte der Webserver einen HTTP-Header mit anderem Charset (Zeichensatz) senden.
Es ist zwar nicht zwingend erforderlich, die Zeichenkodierung nochmal in einer Meta-Tag Anweisung anzugeben, sollte ein Benutzer die Webseite jedoch lokal speichern ist kein Server vorhanden, der die Zeichenkodierung übermittelt und der Browser wird offline auf die Meta-Angaben zurückgreifen.

XML-Deklaration in der 1.Zeile
<?xml version="1.0" encoding="iso-8859-1"?>
oder
<?xml version="1.0" encoding="utf-8"?>
HTML/XHTML-Meta-Tag Content-Type
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
oder
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
HTTP-Header via PHP
<? header('Content-type: text/html; charset=iso-8859-1'); ?>
oder
<? header('Content-type: text/html; charset=utf-8'); ?>

Die häufigste Ursache für diesen Fehler ist wohl der, dass beispielsweise in der MySQL Datenbank für die Zeichensatz-Unterstützung die Kollation utf8_bin gewählt, der Zeichensatz der Webseite jedoch als ISO-8859-1 deklariert wurde. Werden die Daten nun über ein Formular der Webseite an die Datenbank übermittelt, werden diese also mit dem ISO-Zeichensatz der Webseite an die MySQL Datenbank übergeben die diese Zeichen in der utf8_bin Kollation speichert.

<?php
echo utf8_encode('      ');
?>

Das Beispiel erzeugt folgende Ausgabe:
ä ö ü „ ‐ œ Ÿ
<?php
echo utf8_decode('ä ö ü „ ‐ œ Ÿ');
?>

Das Beispiel erzeugt folgende Ausgabe:
      
<?php
echo iconv("UTF-8", "ISO-8859-1", 'ä ö ü „ ‐ œ Ÿ');
?>

Das Beispiel erzeugt folgende Ausgabe:
      ?>

Weitere hilfreiche Informationen zum Thema Zeichenkodierung in MySQL-Datenbanken finden sich unter:
PHP und UTF-8 - eine AnleitungPHP und UTF-8 in MySQL


htmlentities()


Die Funktion htmlentities() wandelt alle Zeichen, die eine HTML-Code-Entsprechung haben, in diesen HTML-Code um.

Zur Erklrung:

htmlentities ( $string [, int $quote_style [, $charset [, bool $double_encode = true ]]] )

Der zweite Parameter (quote_style) ist optional und definiert, wie 'einfache' und "doppelte" Anfhrungszeichen behandelt werden. Es gibt drei Konstanten, wobei ENT_COMPAT voreingestellt ist.

Mgliche Angaben fr quote_style:
ENT_COMPAT - nur "doppelte" Anfhrungszeichen werden umgewandelt.
ENT_QUOTES - "doppelte" und 'einfache' Anfhrungszeichen werden umgewandelt.
ENT_NOQUOTES - "doppelte" und 'einfache' Anfhrungszeichen bleiben unverndert.

Der dritte Parameter (charset) ist optional und definiert den fr die Konvertierung bentigten Zeichensatz. Standardmig ist der ISO-8859-1 Zeichensatz voreingestellt.

Mgliche Angaben fr charset:
ISO-8859-1 - Westeuropisch, Latin-1 ISO-8859-15 - Westeuropisch, Latin-9 - enthlt u.a. das Euro-Zeichen.
UTF-8 - ASCII-kompatibles Multi-Byte 8-Bit Unicode.
cp866 - DOS-spezifischer Kyrillischer Zeichensatz. Ab PHP Version 4.3.2.
cp1251 - Windows-spezifischer Kyrillischer Zeichensatz. Ab PHP Version 4.3.2.
cp1252 - Windows spezifischer Zeichensatz fr westeuropische Sprachen.

Ein Beispiel:

<?php
$string = "Ein 'Sonderzeichen' ist <strong>fett</strong>";
echo htmlentities($string);
?>
Das Beispiel erzeugt folgende Ausgabe:
Ein 'Sonderzeichen' ist &lt;strong&gt;fett&lt;/strong&gt; 
<?php
$string = "Ein 'Sonderzeichen' ist <strong>fett</strong>";
echo htmlentities($string, ENT_QUOTES);
?>
Das Beispiel erzeugt folgende Ausgabe:
Ein &#039;Sonderzeichen&#039; ist &lt;strong&gt;fett&lt;/strong&gt; 
<?php
$string = "Ein 'Sonderzeichen' ist <strong>fett</strong>";
echo htmlentities($string, ENT_QUOTES, 'UTF-8');
?>
Das Beispiel erzeugt folgende Ausgabe:
Ein &#039;Sonderzeichen&#039; ist &lt;strong&gt;fett&lt;/strong&gt; 

html_entity_decode()


Die Funktion html_entity_decode() wandelt alle HTML-Code Zeichen, die entsprechenden Ursprungszeichen um.

Zur Erklrung:

html_entity_decode ( $string [, int $quote_style = ENT_COMPAT [, $charset ]] )

html_entity_decode() ist das Pendant zu htmlentities(), daher entsprechen die Parameter (quote_style) und (charset) genau der beschrieben Definition fr htmlentities().

Ein Beispiel:

<?php
$string = "Ein &#039;Sonderzeichen&#039; ist &lt;strong&gt;fett&lt;/strong&gt;";
echo html_entity_decode($string);
?>
Das Beispiel erzeugt folgende Ausgabe:
Ein &#039;Sonderzeichen&#039; ist <strong>fett</strong> 
<?php
$string = "Ein &#039;Sonderzeichen&#039; ist &lt;strong&gt;fett&lt;/strong&gt;";
echo html_entity_decode($string, ENT_QUOTES);
?>
Das Beispiel erzeugt folgende Ausgabe:
Ein 'Sonderzeichen' ist <strong>fett</strong> 
Das Beispiel erzeugt folgende Ausgabe:
Ein 'Sonderzeichen' ist fett 

ord()


Die Funktion ord($string) gibt den ASCII-Wert eines Zeichens zurck und ist das Pendant zu chr().

Ein Beispiel:

<?php
$string = "p";
echo ord($string);
echo ord('p');
?>
Das Beispiel erzeugt folgende Ausgabe:
112 

chr()


Die Funktion chr(int $ascii) gibt einen Ein-Zeichen-String des ASCII-Wertes zurck und ist das Pendant zu ord().

Ein Beispiel:

<?php
$ascii = '112';
echo chr($ascii);
echo chr('112');
?>
Das Beispiel erzeugt folgende Ausgabe:
p 

Ein Kombinationsbeispiel:


Mit diesen Funktionen wurde die obenstehenden HTML-Entities TabelleHTML-Entities Tabelle erstellt.

<?php
$string = "";
echo ord($string);
?>

Das Beispiel erzeugt folgende Ausgabe:
169
echo "&#". ord($string) .";";
?>

Das Beispiel erzeugt den Unicode dezimal:
&#169;
echo "&#". urlencode ('x'. str_pad(strtoupper(dechex(ord($string))), 4, "0", STR_PAD_LEFT)) .";
?>

Das Beispiel erzeugt den Unicode hexadezimal:
&#x00A9;
echo "&#". str_replace("&", "", htmlentities(html_entity_decode("&#". ord($string) .";")));
?>

Das Beispiel erzeugt das HTML-Entity:
&#copy;

Zur Erklärung:


weitere verwandte Funktionen - de.php.net - str_pad()str_pad() , de.php.net - strtoupper()strtoupper() , de.php.net - dechex()dechex().


» zum Seitenanfang

Tipps & Tricks

mehr zum Thema: nächster und vorheriger EintragMySQL nächsten und vorherigen Datensatz

Den alphabetisch nächsten und vorherigen Datensatzes aus einer Datenbank ermitteln und in alphatischer Reihenfolge den nächsten und vorherigen Datensatz ausgeben.

» mehr zum Thema: nächster und vorheriger Eintragmehr lesen

mehr zum Thema: Teil eines Datensatzes suchen und ersetzenMySQL Teilstring suchen und ersetzen

In einer Datenbanktabelle einen bestimmten Teil eines Strings suchen und diesen dann auszutauschen.

» mehr zum Thema: Teil eines Datensatzes suchen und ersetzenmehr lesen

mehr zum Thema: Browser & IP-Adresse indentifizierenPHP Browser identifizieren

Beim Aufruf einer Website sendet jeder Browser eine Kennung, die dem Server angibt, um welchen "User-Agent" es sich handelt.

» mehr zum Thema: Browser & IP-Adresse indentifizierenmehr lesen

mehr zum Thema: Datum und UhrzeitfunktionPHP Datum und Zeit

Für zeitgesteuerte Inhalte sind Datum- und Uhrzeitfunktionen unerlässlich. Grundlage bildet der von Unix-Systemen verwendete Timestamp.

» mehr zum Thema: Datum und Uhrzeitfunktionmehr lesen

mehr zum Thema: Anzahl Zeichen im String ermittelnPHP Zeichen & Wörter zählen

Häufig genügt es zu wissen, wie viele Zeichen der Text beinhaltet, php kann jedoch weitaus mehr.

» mehr zum Thema: Anzahl Zeichen im String ermittelnmehr lesen

mehr zum Thema: Zeichen & Zeichenfolgen ersetzenPHP Zeichen ersetzen

Häufig ist es notwendig mehrere Zeichen oder Zeichenfolgen innerhalb eines Strings zu ersetzen.

» mehr zum Thema: Zeichen & Zeichenfolgen ersetzenmehr lesen

mehr zum Thema: HTML-Entity - Maskierungen für SonderzeichenPHP HTML-Entities

Standardkonformer HTML-Code erfordert eine korrekte Ausgabe sämtlicher Literalen, dazu gehören auch und vor allem soggenannte HTML-Entity.

» mehr zum Thema: HTML-Entity - Maskierungen für Sonderzeichenmehr lesen

mehr zum Thema: Farbwerte von RGB nach HEX bzw. HEX nach RGBPHP RGB/HEX-Umrechner

Um die Farben einzelner Elemente auf Webseiten festzulegen, gibt es zwei Möglichkeiten. Die Farben können als RGB-Werte im Hexadezimalformat oder ...

» mehr zum Thema: Farbwerte von RGB nach HEX bzw. HEX nach RGBmehr lesen

mehr zum Thema: Perl Compatible Regular ExpressionsPHP PCRE-Funktionen

Die PHP PCREInformationBedeutung: PCREPerl Compatible Regular Expressions Funktionen sind eine Programmbibliothek zur Auswertung von Regulren Ausdrcken ...

» mehr zum Thema: Perl Compatible Regular Expressionsmehr lesen

mehr zum Thema: Regular Expressions / RegExpPHP Regulre Ausdrcke

Regulre Ausdrcke, auch Regex oder RegExp genannt, sind Zeichen- ketten, die ...

» mehr zum Thema: Regular Expressions / RegExpmehr lesen

mehr zum Thema: Regular Expressions / RegExpRegEx Beispiele

Praxisbzogene Regular Expression Beispiele für die Anwendung in PHP.

» mehr zum Thema: Regular Expressions / RegExpmehr lesen


Tastaturkürzel