Jump to content

JoeCare

Member
  • Posts

    1
  • Joined

  • Last visited

Posts 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...