• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل متد url_title با زبان فارسی
#1
سلام
میدونید که کار این متد url_title اینه که یک رشته رو میگره (مثلا عنوان خبر) و بجای space هاش (اگه داشته باشه)
دش - میزاره و 3 تا آرگومان داره که .....
کد پی‌اچ‌پی:
$title "What's wrong with CSS?";
 
$url_title url_title($title);
 
// Produces:  Whats-wrong-with-CSS 
مشکل اینجاس که وقتی یک رشته رو فارسی وارد این متد میکنم یه این صورت در میاد
[عکس: 35152518890066260398.png]

لطفا راهنمایی کنید Huh
  پاسخ
تشکر شده توسط :
#2
ایا Encoding روی utf8 هست؟
تونل ها مي گويند : راه هست؛ حتي در دل سنگ ها.Wink
استفاده از دکمه تشکر(Heart) نشان شخصیت شماست;
درگاه پرداخت 724
  پاسخ
تشکر شده توسط :
#3
(۱۳۹۱ آذر ۱۱, ۰۳:۰۸ ق.ظ)masoud1990 نوشته: ایا Encoding روی utf8 هست؟

بله UTF-8 است مشکل چیزه دیگه ای بود که حل شد

برای استفاده کردن از این متد سه تا کار دیگه باید بکنیم

1.تو فایل
config.php این خط رو جایگزین کنید
کد پی‌اچ‌پی:
//$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['permitted_uri_chars'] = 'a-z 0-9~%.+:_\- ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی'

2.توی فایل url_helper.php که این متد ( url_title ) وجود داره کاراکتر های فارسی رو اضافه کنیم
کد پی‌اچ‌پی:
    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);
    } 

3.سومین آرگومان این متد ( که برای کوچیک کردن حروف لاتین استفاده میشه strtolower() )که به صورت پیش فرض FALSE است , اگر TRUE کنیم و رشته فارسی بهش بدیم مثل عکس زیر بهمون خروجی میده

http://upcity.ir/images/35152518890066260398.png

پس همون FALSE باید تعریف کنیم .
  پاسخ
تشکر شده توسط : masoud1990


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان