Jump to content

JoeCare

Member
  • Posts

    1
  • Joined

  • Last visited

Everything posted by JoeCare

  1. This should help (Url encode/decode from UTF-8 U+0300 to UTF-8 Regular) https://goo.gl/QCZrYL <?php // Auteur : JoeCare // Date : 2017-01-27 21:00:00 // Description : Url encode/decode d'UTF-8 U+0300 vers UTF-8 Regular function urldecode_u300($txt) { if (!strlen($txt)) return ""; $normalaccent = array( //U+00C0 À "%C3%80" => array("A", "GRAVE"), //U+00C1 Á "%C3%81" => array("A", "ACUTE"), //U+00C2 Â "%C3%82" => array("A", "CIRCUMFLEX"), //U+00C3 Ã "%C3%83" => array("A", "TILDE"), //U+00C4 Ä "%C3%84" => array("A", "DIAERESIS"), //U+00C5 Å "%C3%85" => array("A", "RING ABOVE"), //U+00C7 Ç "%C3%87" => array("C", "CEDILLA"), //U+00C8 È "%C3%88" => array("E", "GRAVE"), //U+00C9 É "%C3%89" => array("E", "ACUTE"), //U+00CA Ê "%C3%8a" => array("E", "CIRCUMFLEX"), //U+00CB Ë "%C3%8b" => array("E", "DIAERESIS"), //U+00CC Ì "%C3%8c" => array("I", "GRAVE"), //U+00CD Í "%C3%8d" => array("I", "ACUTE"), //U+00CE Î "%C3%8e" => array("I", "CIRCUMFLEX"), //U+00CF Ï "%C3%8f" => array("I", "DIAERESIS"), //U+00D1 Ñ "%C3%91" => array("N", "TILDE"), //U+00D2 Ò "%C3%92" => array("O", "GRAVE"), //U+00D3 Ó "%C3%93" => array("O", "ACUTE"), //U+00D4 Ô "%C3%94" => array("O", "CIRCUMFLEX"), //U+00D5 Õ "%C3%95" => array("O", "TILDE"), //U+00D6 Ö "%C3%96" => array("O", "DIAERESIS"), //U+00D9 Ù "%C3%99" => array("U", "GRAVE"), //U+00DA Ú "%C3%9a" => array("U", "ACUTE"), //U+00DB Û "%C3%9b" => array("U", "CIRCUMFLEX"), //U+00DC Ü "%C3%9c" => array("U", "DIAERESIS"), //U+00DD Ý "%C3%9d" => array("Y", "ACUTE"), //U+00E0 à "%C3%a0" => array("a", "GRAVE"), //U+00E1 á "%C3%a1" => array("a", "ACUTE"), //U+00E2 â "%C3%a2" => array("a", "CIRCUMFLEX"), //U+00E3 ã "%C3%a3" => array("a", "TILDE"), //U+00E4 ä "%C3%a4" => array("a", "DIAERESIS"), //U+00E5 å "%C3%a5" => array("a", "RING ABOVE"), //U+00E7 ç "%C3%a7" => array("c", "CEDILLA"), //U+00E8 è "%C3%a8" => array("e", "GRAVE"), //U+00E9 é "%C3%a9" => array("e", "ACUTE"), //U+00EA ê "%C3%aa" => array("e", "CIRCUMFLEX"), //U+00EB ë "%C3%ab" => array("e", "DIAERESIS"), //U+00EC ì "%C3%ac" => array("i", "GRAVE"), //U+00ED í "%C3%ad" => array("i", "ACUTE"), //U+00EE î "%C3%ae" => array("i", "CIRCUMFLEX"), //U+00EF ï "%C3%af" => array("i", "DIAERESIS"), //U+00F1 ñ "%C3%b1" => array("n", "TILDE"), //U+00F2 ò "%C3%b2" => array("o", "GRAVE"), //U+00F3 ó "%C3%b3" => array("o", "ACUTE"), //U+00F4 ô "%C3%b4" => array("o", "CIRCUMFLEX"), //U+00F5 õ "%C3%b5" => array("o", "TILDE"), //U+00F6 ö "%C3%b6" => array("o", "DIAERESIS"), //U+00F9 ù "%C3%b9" => array("u", "GRAVE"), //U+00FA ú "%C3%ba" => array("u", "ACUTE"), //U+00FB û "%C3%bb" => array("u", "CIRCUMFLEX"), //U+00FC ü "%C3%bc" => array("u", "DIAERESIS"), //U+00FD ý "%C3%bd" => array("y", "ACUTE"), //U+00FF ÿ "%C3%bf" => array("y", "DIAERESIS"), ); $strangeaccent = array( //U+0300 ̀ "GRAVE" => "%CC%80", //U+0301 ́ "ACUTE" => "%CC%81", //U+0302 ̂ "CIRCUMFLEX" => "%CC%82", //U+0303 ̃ "TILDE" => "%CC%83", //U+0304 ̄ "MACRON" => "%CC%84", //U+0305 ̅ "OVERLINE" => "%CC%85", //U+0306 ̆ "BREVE" => "%CC%86", //U+0307 ̇ "DOT ABOVE" => "%CC%87", //U+0308 ̈ "DIAERESIS" => "%CC%88", //U+0309 ̉ "HOOK ABOVE" => "%CC%89", //U+030A ̊ "RING ABOVE" => "%CC%8a", //U+030B ̋ "DOUBLE ACUTE" => "%CC%8b", //U+030C ̌ "CARON" => "%CC%8c", //U+030D ̍ "VERTICAL LINE ABOVE" => "%CC%8d", //U+030E ̎ "DOUBLE VERTICAL LINE ABOVE" => "%CC%8e", //U+030F ̏ "DOUBLE GRAVE" => "%CC%8f", //U+0310 ̐ "CANDRABINDU" => "%CC%90", //U+0311 ̑ "INVERTED BREVE" => "%CC%91", //U+0312 ̒ "TURNED COMMA ABOVE" => "%CC%92", //U+0313 ̓ "COMMA ABOVE" => "%CC%93", //U+0314 ̔ "REVERSED COMMA ABOVE" => "%CC%94", //U+0315 ̕ "COMMA ABOVE RIGHT" => "%CC%95", //U+0316 ̖ "GRAVE BELOW" => "%CC%96", //U+0317 ̗ "ACUTE BELOW" => "%CC%97", //U+0318 ̘ "LEFT TACK BELOW" => "%CC%98", //U+0319 ̙ "RIGHT TACK BELOW" => "%CC%99", //U+031A ̚ "LEFT ANGLE ABOVE" => "%CC%9a", //U+031B ̛ "HORN" => "%CC%9b", //U+031C ̜ "LEFT HALF RING BELOW" => "%CC%9c", //U+031D ̝ "UP TACK BELOW" => "%CC%9d", //U+031E ̞ "DOWN TACK BELOW" => "%CC%9e", //U+031F ̟ "PLUS SIGN BELOW" => "%CC%9f", //U+0320 ̠ "MINUS SIGN BELOW" => "%CC%a0", //U+0321 ̡ "PALATALIZED HOOK BELOW" => "%CC%a1", //U+0322 ̢ "RETROFLEX HOOK BELOW" => "%CC%a2", //U+0323 ̣ "DOT BELOW" => "%CC%a3", //U+0324 ̤ "DIAERESIS BELOW" => "%CC%a4", //U+0325 ̥ "RING BELOW" => "%CC%a5", //U+0326 ̦ "COMMA BELOW" => "%CC%a6", //U+0327 ̧ "CEDILLA" => "%CC%a7", ); foreach ($normalaccent as $ur=>$norm) { if (mb_strpos($txt, $norm[0].$strangeaccent[$norm[1]]) !== false || mb_strpos($txt, $norm[0].strtoupper($strangeaccent[$norm[1]])) !== false) { $txt = str_replace($norm[0].$strangeaccent[$norm[1]], $ur, $txt); $txt = str_replace($norm[0].strtoupper($strangeaccent[$norm[1]]), $ur, $txt); } } return urldecode($txt); } function urlencode_u300($txt) { if (!strlen($txt)) return ""; return urlencode(urldecode_u300(urlencode($txt))); } /* var_dump(urldecode("phe%CC%81nome%CC%81nologie")); //"phénoménologie" var_dump(urldecode_u300("phe%CC%81nome%CC%81nologie")); //"phénoménologie" var_dump(urlencode("phénoménologie")); //"phe%CC%81nome%CC%81nologie" var_dump(urlencode_u300("phénoménologie")); //"ph%C3%A9nom%C3%A9nologie" */
×
×
  • Create New...