سلام . من قسمتی از ادرس صفحم به این شکله مثلا : http://localhost/blog/post/single/یاسمن
الان میخام اون تیکه یاسمن بگیرم و بزارم تو متغیر خب ؟
این کدو زدم :
echo "<meta charset='utf-8' >";
$id = urldecode($id);
echo $id ;
ولی خروجی اینجوریه : اسمن
کلا همه کلمات امتحان کردم ولی فهمیدم به حرف ی حساسه !!
چیگار کنم این ی رو هم کامل نمایش بده ؟؟؟
چون گفتید با حرف ی مشکل داره، احتمالا بخاطر اینه که توی بعضی ویندوز ها کیبورد بجای ی فارسی ی عربی میزنه.
این مشکل با تبدیل ی عربی به ی فارسی یا بعکس حل میشه. یعنی همیشه از یک نوع ی استفاده بشه.
درمورد حرف ک هم همین مسئله وجود داره.
آخ ! آخ ! بله درسته الان ک لینک چک کردم دیدم یه نفر تابع مناسبش نوشته . واقعا ببخشید !!!!
اقا این تابع یکی نوشته بود ولی اولش ک چک کردم دیدم درسته ها ولی نمیدونم باز چش شد دوباره از کار افتاد اینم تابعش :
function to_utf8( $string ) {
// From http://w3.org/International/questions/qa...utf-8.html
if ( preg_match('%^(?:
[x09x0Ax0Dx20-x7E] # ASCII
| [xC2-xDF][x80-xBF] # non-overlong 2-byte
| xE0[xA0-xBF][x80-xBF] # excluding overlongs
| [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte
| xED[x80-x9F][x80-xBF] # excluding surrogates
| xF0[x90-xBF][x80-xBF]{2} # planes 1-3
| [xF1-xF3][x80-xBF]{3} # planes 4-15
| xF4[x80-x8F][x80-xBF]{2} # plane 16
)*$%xs', $string) ) {
return $string;
} else {
return iconv( 'CP1252', 'UTF-8', $string);
}
}
چیکار کنم اخه ؟ ای بابا
پیشنهاد میکنم از خود شناسههای یونیکد اصلاً برای شناسایی محتوا استفاده نکنید بلکه id یا یه شناسه دیگه که مشکل نداره توی URL بگذارین و متن رو فقط برای SEO به URL اضافه کنید.