note 76408 added to function.html-entity-decode
| From: | akniep at rayo dot info | Date: | Fri, 13 Jul 2007 16:39:11 +0000 |
| Subject: | note 76408 added to function.html-entity-decode | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-128443@lists.php.net to get a copy of this message | ||
In answer to "laurynas dot butkus at gmail dot com" and "romans@void.lv" and
their great code2utf-function I added the functionality for entries between [128, 160[ that are not
ASCii, but equal for all major western encodings like ISO8859-X and UTF-8 that has been mentioned
before.
Now, the following function should in fact convert any number (table-entry) into an UTF-8-character.
Thus, the return-value code2utf( <number> ) equals the character that is represented by the
XML-entity &#<number>; (exceptions: #129, #141, #143, #144, #157).
To give an example, the function may be useful for creating a UTF-8-compatible
html_entity_decode-function or determining the entry-position of UTF-8-characters in order to find
the correct entity-replacement or similar.
function code2utf($number)
{
if ($number < 0)
return FALSE;
if ($number < 128)
return chr($number);
// Removing / Replacing Windows Illegals Characters
if ($number < 160)
{
if ($number==128) $number=8364;
elseif ($number==129) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped
to the saved-space #160
elseif ($number==130) $number=8218;
elseif ($number==131) $number=402;
elseif ($number==132) $number=8222;
elseif ($number==133) $number=8230;
elseif ($number==134) $number=8224;
elseif ($number==135) $number=8225;
elseif ($number==136) $number=710;
elseif ($number==137) $number=8240;
elseif ($number==138) $number=352;
elseif ($number==139) $number=8249;
elseif ($number==140) $number=338;
elseif ($number==141) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped
to the saved-space #160
elseif ($number==142) $number=381;
elseif ($number==143) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped
to the saved-space #160
elseif ($number==144) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped
to the saved-space #160
elseif ($number==145) $number=8216;
elseif ($number==146) $number=8217;
elseif ($number==147) $number=8220;
elseif ($number==148) $number=8221;
elseif ($number==149) $number=8226;
elseif ($number==150) $number=8211;
elseif ($number==151) $number=8212;
elseif ($number==152) $number=732;
elseif ($number==153) $number=8482;
elseif ($number==154) $number=353;
elseif ($number==155) $number=8250;
elseif ($number==156) $number=339;
elseif ($number==157) $number=160; // (Rayo:) #129 using no relevant sign, thus, mapped
to the saved-space #160
elseif ($number==158) $number=382;
elseif ($number==159) $number=376;
} //if
if ($number < 2048)
return chr(($number >> 6) + 192) . chr(($number & 63) + 128);
if ($number < 65536)
return chr(($number >> 12) + 224) . chr((($number >> 6) & 63) + 128) .
chr(($number & 63) + 128);
if ($number < 2097152)
return chr(($number >> 18) + 240) . chr((($number >> 12) & 63) + 128) .
chr((($number >> 6) & 63) + 128) . chr(($number & 63) + 128);
return FALSE;
} //code2utf()
----
Server IP: 69.147.83.197
Probable Submitter: 87.185.52.189
----
Manual Page -- http://www.php.net/manual/en/function.html-entity-decode.php
Edit -- https://master.php.net/note/edit/76408
Del: integrated -- https://master.php.net/note/delete/76408/integrated
Del: useless -- https://master.php.net/note/delete/76408/useless
Del: bad code -- https://master.php.net/note/delete/76408/bad+code
Del: spam -- https://master.php.net/note/delete/76408/spam
Del: non-english -- https://master.php.net/note/delete/76408/non-english
Del: in docs -- https://master.php.net/note/delete/76408/in+docs
Del: other reasons-- https://master.php.net/note/delete/76408
Reject -- https://master.php.net/note/reject/76408
Search -- https://master.php.net/manage/user-notes.php