Forum und email

html_entity_decode

(PHP 4 >= 4.3.0, PHP 5)

html_entity_decode — Μετατρέψτε όλες τις HTML οντότητες στους κατάλληλους χαρακτήρες

Περιγραφή

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

Η συνάρτηση html_entity_decode() είναι εκτελεί την αντίστροφη λειτουργία από την htmlentities() γιατι μετατρέπει όλες τις HTML οντότητες του string στους κατάλληλους χαρακτήρες.

Η προαιρετική δεύτερη παράμετρος quote_style σας επιτρέπει να ορίσετε το τι θα γίνει με τα 'απλά' και τα "διπλά" εισαγωγικά. Παίρνει μία από τις ακόλουθες τρεις σταθερές με την προεπιλεγμένη να είναι η ENT_COMPAT:

Διαθέσιμες quote_style σταθερές
Όνομα σταθεράς Περιγραφή
ENT_COMPAT Θα μετατρέψει τα διπλά εισαγωγικά και θα αφήσει τα απλά ανέγγιχτα.
ENT_QUOTES Θα μετατρέψει τα διπλά και τα απλά εισαγωγικά.
ENT_NOQUOTES Δε θα μετατρέψει τα διπλά και τα απλά εισαγωγικά.

Η προκαθορισμένη επιλογή για την παράμετρο charset είναι το σύνολο χαρακτήρων ISO-8859-1. Αυτή ορίζει το σύνολο χαρακτήρων που θα χρησιμοποιηθεί κατά τη μετατροπή. Η υποστήριξη για την τρίτη αυτή παράμετρο προστέθηκε στην 4.1.0.

Η έκδοση PHP 4.3.0 και οι νεώτερες αυτής υποστηρίζουν τα ακόλουθα σύνολα χαρακτήρων:

Υποστηριζόμενα σύνολα χαρακτήρων
Σύνολο χαρακτήρων Δεύτερη ονομασία Περιγραφή
ISO-8859-1 ISO8859-1 Western European, Latin-1
ISO-8859-15 ISO8859-15 Western European, Latin-9. Περιέχει επιπλέον το σύμβολο του Ευρώ, καθώς επίσης γαλλικά και φινλανδικά γράμματα, που δεν περιλαμβάνονται στο Latin-1(ISO-8859-1).
UTF-8   Συμβατό με ASCII, multi-byte 8-bit Unicode.
cp866 ibm866, 866 Σύνολο χαρακτήρων του DOS για ρώσικα. Αυτό το σύνολο χαρακτήρων υποστηρίζεται από την έκδοση 4.3.2 και μετά.
cp1251 Windows-1251, win-1251, 1251 Σύνολο χαρακτήρων των Windows για ρώσικα. Αυτό το σύνολο χαρακτήρων υποστηρίζεται από την έκδοση 4.3.2 και μετά.
cp1252 Windows-1252, 1252 Σύνολο χαρακτήρων των Windows για Western European.
KOI8-R koi8-ru, koi8r Ρώσικα. Αυτό το σύνολο χαρακτήρων υποστηρίζεται από την έκδοση 4.3.2 και μετά.
BIG5 950 Παραδοσιακά κινέζικα, κυρίως αυτά που χρησιμοποιούνται στην Ταϊβάν.
GB2312 936 Απλοποιημένα κινέζικα, το εθνικά χρησιμοποιούμενο σύνολο χαρακτήρων.
BIG5-HKSCS   Big5 με επεκτάσεις για το Hong Kong, παραδοσικά κινέζικα.
Shift_JIS SJIS, 932 Japanese
EUC-JP EUCJP Γιαπωνέζικα

Note: Στη θέση οποιουδήποτε συνόλου χαρακτήρων που δεν αναγνωρίζεται θα χρησιμοποιηθεί το ISO-8859-1.

Example#1 Αποκωδικοποιώντας html οντότητες

<?php
$orig 
"I'll \"walk\" the <b>dog</b> now";

$a htmlentities($orig);

$b html_entity_decode($a);

echo 
$a// I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b// I'll "walk" the <b>dog</b> now


// For users prior to PHP 4.3.0 you may do this:
function unhtmlentities ($string)
{
    
$trans_tbl get_html_translation_table (HTML_ENTITIES);
    
$trans_tbl array_flip ($trans_tbl);
    return 
strtr ($string$trans_tbl);
}

$c unhtmlentities($a);

echo 
$c// I'll "walk" the <b>dog</b> now

?>

Note: Μπορεί να απορείτε γιατί η trim(html_entity_decode('&nbsp;')); δεν μειώνει το μήκος του string ώστε να προκύψει το κενό, ο λόγος είναι ότι η οντότητα '&nbsp;' δεν είναι ο κώδικας ASCII 32 (που γίνεται κενός χαρακτήρας από τη συνάρτηση trim()) αλλά ο κώδικας ASCII code 160 (0xa0) στο προκαθορισμένο σύνολο χαρακτήρων ISO8859-1.

Ανατρέξτε επίσης στις: htmlentities(), htmlspecialchars(), get_html_translation_table(), htmlspecialchars() και urldecode().