note 105757 added to function.mb-strtolower

From: Date: Mon, 12 Sep 2011 19:50:46 +0000
Subject: note 105757 added to function.mb-strtolower
Groups: php.notes 
Request: Send a blank email to php-notes+get-183118@lists.php.net to get a copy of this message
In addition to my last comment: Since I was not finding any proper solution in the internet on how to map all UTF8-strings to their lowercase counterpart in PHP, I offer the following hard-coded extended mb_strtolower function for UTF-8 strings: The function wraps the existing function mb_strtolower() and additionally replaces uppercase UTF8-characters for which there is a lowercase representation. Since there is no proper Unicode uppercase and lowercase character-table in the internet that I was able to find, I checked the first million UTF8-characters against the Google-search and -KeywordTool and identified the following 78 characters as uppercase-characters, not being replaced by mb_strtolower, but having a UTF8 lowercase counterpart. <?php //the numbers in the in-line-comments display the characters' Unicode code-points (CP). function strtolower_utf8_extended( $utf8_string ) { $additional_replacements = array ( "Dž" => "dž" // 453 -> 454 , "Lj" => "lj" // 456 -> 457 , "Nj" => "nj" // 459 -> 460 , "Dz" => "dz" // 498 -> 499 , "Ϸ" => "ϸ" // 1015 -> 1016 , "Ϲ" => "ϲ" // 1017 -> 1010 , "Ϻ" => "ϻ" // 1018 -> 1019 , "ᾈ" => "ᾀ" // 8072 -> 8064 , "ᾉ" => "ᾁ" // 8073 -> 8065 , "ᾊ" => "ᾂ" // 8074 -> 8066 , "ᾋ" => "ᾃ" // 8075 -> 8067 , "ᾌ" => "ᾄ" // 8076 -> 8068 , "ᾍ" => "ᾅ" // 8077 -> 8069 , "ᾎ" => "ᾆ" // 8078 -> 8070 , "ᾏ" => "ᾇ" // 8079 -> 8071 , "ᾘ" => "ᾐ" // 8088 -> 8080 , "ᾙ" => "ᾑ" // 8089 -> 8081 , "ᾚ" => "ᾒ" // 8090 -> 8082 , "ᾛ" => "ᾓ" // 8091 -> 8083 , "ᾜ" => "ᾔ" // 8092 -> 8084 , "ᾝ" => "ᾕ" // 8093 -> 8085 , "ᾞ" => "ᾖ" // 8094 -> 8086 , "ᾟ" => "ᾗ" // 8095 -> 8087 , "ᾨ" => "ᾠ" // 8104 -> 8096 , "ᾩ" => "ᾡ" // 8105 -> 8097 , "ᾪ" => "ᾢ" // 8106 -> 8098 , "ᾫ" => "ᾣ" // 8107 -> 8099 , "ᾬ" => "ᾤ" // 8108 -> 8100 , "ᾭ" => "ᾥ" // 8109 -> 8101 , "ᾮ" => "ᾦ" // 8110 -> 8102 , "ᾯ" => "ᾧ" // 8111 -> 8103 , "ᾼ" => "ᾳ" // 8124 -> 8115 , "ῌ" => "ῃ" // 8140 -> 8131 , "ῼ" => "ῳ" // 8188 -> 8179 , "Ⅰ" => "ⅰ" // 8544 -> 8560 , "Ⅱ" => "ⅱ" // 8545 -> 8561 , "Ⅲ" => "ⅲ" // 8546 -> 8562 , "Ⅳ" => "ⅳ" // 8547 -> 8563 , "Ⅴ" => "ⅴ" // 8548 -> 8564 , "Ⅵ" => "ⅵ" // 8549 -> 8565 , "Ⅶ" => "ⅶ" // 8550 -> 8566 , "Ⅷ" => "ⅷ" // 8551 -> 8567 , "Ⅸ" => "ⅸ" // 8552 -> 8568 , "Ⅹ" => "ⅹ" // 8553 -> 8569 , "Ⅺ" => "ⅺ" // 8554 -> 8570 , "Ⅻ" => "ⅻ" // 8555 -> 8571 , "Ⅼ" => "ⅼ" // 8556 -> 8572 , "Ⅽ" => "ⅽ" // 8557 -> 8573 , "Ⅾ" => "ⅾ" // 8558 -> 8574 , "Ⅿ" => "ⅿ" // 8559 -> 8575 , "Ⓐ" => "ⓐ" // 9398 -> 9424 , "Ⓑ" => "ⓑ" // 9399 -> 9425 , "Ⓒ" => "ⓒ" // 9400 -> 9426 , "Ⓓ" => "ⓓ" // 9401 -> 9427 , "Ⓔ" => "ⓔ" // 9402 -> 9428 , "Ⓕ" => "ⓕ" // 9403 -> 9429 , "Ⓖ" => "ⓖ" // 9404 -> 9430 , "Ⓗ" => "ⓗ" // 9405 -> 9431 , "Ⓘ" => "ⓘ" // 9406 -> 9432 , "Ⓙ" => "ⓙ" // 9407 -> 9433 , "Ⓚ" => "ⓚ" // 9408 -> 9434 , "Ⓛ" => "ⓛ" // 9409 -> 9435 , "Ⓜ" => "ⓜ" // 9410 -> 9436 , "Ⓝ" => "ⓝ" // 9411 -> 9437 , "Ⓞ" => "ⓞ" // 9412 -> 9438 , "Ⓟ" => "ⓟ" // 9413 -> 9439 , "Ⓠ" => "ⓠ" // 9414 -> 9440 , "Ⓡ" => "ⓡ" // 9415 -> 9441 , "Ⓢ" => "ⓢ" // 9416 -> 9442 , "Ⓣ" => "ⓣ" // 9417 -> 9443 , "Ⓤ" => "ⓤ" // 9418 -> 9444 , "Ⓥ" => "ⓥ" // 9419 -> 9445 , "Ⓦ" => "ⓦ" // 9420 -> 9446 , "Ⓧ" => "ⓧ" // 9421 -> 9447 , "Ⓨ" => "ⓨ" // 9422 -> 9448 , "Ⓩ" => "ⓩ" // 9423 -> 9449 , "𐐦" => "𐑎" // 66598 -> 66638 , "𐐧" => "𐑏" // 66599 -> 66639 ); $utf8_string = mb_strtolower( $utf8_string, "UTF-8"); $utf8_string = strtr( $utf8_string, $additional_replacements ); return $utf8_string; } //strtolower_utf8_extended() ?> ---- Server IP: 217.160.235.204 Probable Submitter: 91.44.67.173 ---- Manual Page -- http://www.php.net/manual/en/function.mb-strtolower.php Edit -- https://master.php.net/note/edit/105757 Del: integrated -- https://master.php.net/note/delete/105757/integrated Del: useless -- https://master.php.net/note/delete/105757/useless Del: bad code -- https://master.php.net/note/delete/105757/bad+code Del: spam -- https://master.php.net/note/delete/105757/spam Del: non-english -- https://master.php.net/note/delete/105757/non-english Del: in docs -- https://master.php.net/note/delete/105757/in+docs Del: other reasons-- https://master.php.net/note/delete/105757 Reject -- https://master.php.net/note/reject/105757 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#183118) next »