View Full Version : مشکل متد url_title با زبان فارسی
pitook
جمعه 10 آذر 1391, 14:22 عصر
سلام
میدونید که کار این متد url_title اینه که یک رشته رو میگره (مثلا عنوان خبر) و بجای space هاش (اگه داشته باشه)
دش - میزاره و 3 تا آرگومان داره که .....
$title = "What's wrong with CSS?";
$url_title = url_title($title);
// Produces: Whats-wrong-with-CSS
مشکل اینجاس که وقتی این رشته رو فارسی وارد این متد میکنم یه این صورت در میاد
95813
لطفا راهنمایی کنید :قلب:
plague
شنبه 11 آذر 1391, 12:27 عصر
من نمیدونم مشکل از اینیه که من میگم یا نه ! ولی کلا کاراکتر های فارسی به صورت دیفالت پیشتیبانی نمیشن توی url
تو فایل
config.php
این خط رو جایگزین کن
//$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['permitted_uri_chars'] = 'a-z 0-9~%.+:_\- ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی';
بعد تست کن
pitook
یک شنبه 12 آذر 1391, 23:31 عصر
من نمیدونم مشکل از اینیه که من میگم یا نه ! ولی کلا کاراکتر های فارسی به صورت دیفالت پیشتیبانی نمیشن توی url
تو فایل
config.php
این خط رو جایگزین کن
//$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['permitted_uri_chars'] = 'a-z 0-9~%.+:_\- ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی';
بعد تست کن
ممنون ولی برای استفاده کردن از این متد دو تا کار دیگه باید بکنیم
1.توی فایل url_helper.php که این متد وجود داره کاراکتر های فارسی رو اضافه کنیم
function url_title($str, $separator = '-', $lowercase = FALSE)
{
if ($separator == 'dash')
{
$separator = '-';
}
else if ($separator == 'underscore')
{
$separator = '_';
}
$q_separator = preg_quote($separator);
$trans = array(
'&.+?;' => '',
'[^a-z0-9آابپتثجچحخدذرزژسشصضطظعغف کگلمنوهیيئ۱۲۳۴۵۶۷۸۹۰\-\._]' => ' ',
//اضافه کردن کاراکتر های فارسی به این قسمت
'\s+' => $separator,
'('.$q_separator.')+' => $separator
);
$str = strip_tags($str);
foreach ($trans as $key => $val)
{
$str = preg_replace("#".$key."#i", $val, $str);
}
if ($lowercase === TRUE)
{
$str = strtolower($str);
}
return trim($str, $separator);
}
2.سومین آرگومان این متد ( که برای کوچیک کردن حروف لاتین استفاده میشه strtolower() )که به صورت پیش فرض FALSE است , اگر TRUE کنیم و رشته فارسی بهش بدیم مثل عکس زیر بهمون خروجی میده
95934
پس همون FALSE باید تعریف کنیم .
hidensoft
شنبه 09 دی 1391, 02:29 صبح
اصولا regx برای فارسی جواب نمی ده :)
codedme
یک شنبه 13 اسفند 1391, 02:38 صبح
اصولا regx برای فارسی جواب نمی ده :)
جواب میده باید به جای کاراکتر ها شماره کاراکتر ها رو بزنید
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.