ถ้าเราเอา url เข้าไปทั้งยวง มันจะ encode ผิดไปหมดนี่ล่ะ ตัวอย่างเช่น จาก
httpö://www.un-no.com/ภาษาไทย.jpg
ดันได้เป็น
https%3A%2F%2Fwww.un-no.com%2F%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2.jpg
ซึ่งเอาไปใช้ต่อไม่ได้แหงๆ
$url = 'httpö://www.un-no.com/ภาษาไทย.jpg';
$url = preg_replace_callback('#://([^/]+)/([^?]+)#', function ($match) {
return '://' . $match[1] . '/' . join('/', array_map('rawurlencode', explode('/', $match[2])));
}, $url);
ได้ผล
httpö://www.un-no.com/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2.jpg