2012-03-28 11 views
5

के साथ यूनिकोड वर्ण शामिल हैं वर्तमान में, मैं यूआरएल एन्कोड करने के लिए एक समाधान की तलाश कर रहा हूं जिसमें यूनिकोड वर्ण, खमेर यूनिकोड शामिल है। मैं php में निर्मित समारोह urlencode (का उपयोग कर की कोशिश की है) और यह परिणाम देता है: उदाहरण के लिए: http://www.example.com/?kwd=Mac+Book+Pro + នៅ ប្រទេស យើងयूआरएल को एन्कोड करने के लिए कैसे PHP

मैं गूगल खोज के साथ परीक्षण किया है, वहीं यह परिणाम: https://www.google.com.kh/#hl=en&sclient=psy-ab&q=Mac+Book+Pro+%E1%9E%93%E1%9F%85%E1%9E%94%E1%9F%92%E1%9E%9A%E1%9E%91%E1%9F%81%E1%9E%9F%E1%9E%99%E1%9E%BE%E1%9E%84&oq=Mac+Book+Pro+%E1%9E%93%E1%9F%85%E1%9E%94%E1%9F%92%E1%9E%9A%E1%9E%91%E1%9F%81%E1%9E%9F%E1%9E%99%E1%9E%BE%E1%9E%84

कैसे करने के लिए उस? उम्मीद है कि यहां कोई मेरी मदद करेगा। अग्रिम धन्यवाद!

उत्तर

9

UTF-8 के लिए आप उपयोग कर सकते हैं:

urlencode(utf8_encode($string)); //for encoding 

utf8_decode(urldecode($string)); //for decoding 

UTF-16 के लिए आप ("urlencode" http://php.net में के लिए नोट से) इस सुविधा का उपयोग कर सकते हैं:

function utf16_urlencode ($str) { 
    # convert characters > 255 into HTML entities 
    $convmap = array(0xFF, 0x2FFFF, 0, 0xFFFF); 
    $str = mb_encode_numericentity($str, $convmap, "UTF-8"); 

    # escape HTML entities, so they are not urlencoded 
    $str = preg_replace('/&#([0-9a-fA-F]{2,5});/i', 'mark\\1mark', $str); 
    $str = urlencode($str); 

    # now convert escaped entities into unicode url syntax 
    $str = preg_replace('/mark([0-9a-fA-F]{2,5})mark/i', '%u\\1', $str); 
    return $str; 
} 
+0

धन्यवाद एंडी, वास्तव में, मैंने पहले से ही उपरोक्त कोडों का प्रयास किया है: urlencode (utf8_encode ($ string)); // एन्कोडिंग के लिए लेकिन यह अभी भी उसी परिणाम का उत्पादन नहीं करता है जैसा कि Google ने मेरे प्रश्न में बताया है। मैंने फ़ंक्शन को भी आजमाया है: utf16_urlencode() लेकिन यह वह उत्पाद नहीं है जो मैं चाहता हूं। धन्यवाद agian – Thavarith

0
function cleanUrl($url) { 
    $res= urlencode(utf8_encode($url)); 
    $res = str_replace("%3A",":",$res); 
    $res = str_replace("%2F","/",$res); 
    return $res; 
}