/
  • کار با رشته‌های فارسی در متد post

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 4
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی کار با رشته‌های فارسی در متد post
    نویسنده پیام
    sama01 آفلاین
    عضو جدید
    **

    ارسال‌ها: 8
    تاریخ عضویت: ۱۳۸۷ بهمن ۲۸
    اعتبار: 0
    تشکرها : 11
    ( 2 تشکر در 1 ارسال )
    ارسال: #1
    کار با رشته‌های فارسی در متد post
    چرا برای جدا کردن مثلا کاراکتر نخست یک رشته فارسی که توسط متد post از صفحه دیگری دریافت می‌شود، باید دو کاراکتر اول را جدا کنیم؟
    من این مشکل را دارم. انودینگ صفحه‌ها هم utf-8 است.

    ممنون.
    ۱۳۸۸ فروردين ۲۷ ۰۶:۳۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,014
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #2
    RE: کار با رشته‌های فارسی در متد post
    چونکه Smile
    شاید علت برمی گرده به اینکه کاراکتر های فارسی در هشت بیت بالاتر قرار می گیرند یا یه همچین چیزایی
    (آخرین ویرایش در این ارسال: ۱۳۸۸ فروردين ۲۸ ۱۰:۰۲ صبح، توسط oia.)
    ۱۳۸۸ فروردين ۲۷ ۰۸:۱۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,783
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #3
    RE: کار با رشته‌های فارسی در متد post
    سلام،
    نقل قول: چرا برای جدا کردن مثلا کاراکتر نخست یک رشته فارسی که توسط متد post از صفحه دیگری دریافت می‌شود، باید دو کاراکتر اول را جدا کنیم؟
    من این مشکل را دارم. انودینگ صفحه‌ها هم utf-8 است.
    عزیز بیشتر توضیح بدید.
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۸۸ فروردين ۲۸ ۰۱:۳۰ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    oia آفلاین
    محمد ثانی
    *****

    ارسال‌ها: 2,014
    تاریخ عضویت: ۱۳۸۷ آذر ۲۶
    اعتبار: 66
    تشکرها : 2330
    ( 2091 تشکر در 1290 ارسال )
    ارسال: #4
    RE: کار با رشته‌های فارسی در متد post
    محضه توضیح بیشتر:
    ما می تونیم یک رشته رو به صورت آرایه در نظر بگیریم که ان اُمین کاراکتر رشته می شه ان منهای یک اُمین عضو آرایه
    اما اگه رشته ی ما utf-8 باشه اونوقت کمی قضیه فرق می کنه
    کد PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    title>google</title>
    </
    head>

    <
    body>
    <
    div dir="rtl">
    <?
    php

    $str1 
    func1('ABCDEFGHI');
    $str2 func1('ابپتثدذرز');
    $str3 func2('ابپتثدذرز');

    echo 
    $str1.'<br>'.$str2.'<br>'.$str3.'<br>'.strlen('ابپتثدذرز').'<br>'.strlen('ABCDEFGHI');

    function 
    func1($str)
    {
        for(
    $i=0$i<strlen($str); $i++)$s .= $str[$i].' ';
        return 
    $s;
    }

    function 
    func2($str)
    {
        for(
    $i=0$i<strlen($str);){$s .= $str[$i].$str[$i+1].' '$i+=2;};
        return 
    $s;
    }
    ?>
    </div>
    </body>
    </html> 
    نتیجه:
    کد:
    A B C D E F G H I
    ؠ? ؠ? ٠? ؠ? ؠ? ؠ? ؠ? ؠ? ؠ?
    ا ب پ ت ث د ذ ر ز
    18
    9
    توی این اسکریپت شاید بشه دید که طول یک رشته فارسی دوبرابر یک رشته انگلیسی هستش
    فک کنم این همونه که میگن php به صورت داخلی از utf-8 پشتی بانی نمی کنه!!!
    ۱۳۸۸ فروردين ۲۸ ۱۰:۴۲ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #5
    RE: کار با رشته‌های فارسی در متد post
    در هر حالتی که شما یه رشته رو به صورت کدهای به غیر از ASCII داشته باشید بر اساس اینکه چه تعداد بیت رو اشغال می کنند در php توسط توابعی مثل substr شناسایی میشن. کاراکترهای ASCII یک بایت فضا رو می گیرند اما کاراکترهای فارسی که در انکودینگ UTF-8 قرار می گیرند دو بایت رو اشغال می کنه. در واقع توابعی مثل substr یا strlen بر اساس بیت کارشون رو انجام میدن و هر 8 بیت رو یک کاراکتر در نظر می گیرند.
    برای اینکه با این مشکلات مواجه نشید باید از بسته mbstring استفاده بشه که توابعی مثل mb_substr یا mb_strlen رو در اختیار شما قرار میده
    (آخرین ویرایش در این ارسال: ۱۳۸۸ فروردين ۲۸ ۰۱:۳۲ عصر، توسط admin.)
    ۱۳۸۸ فروردين ۲۸ ۰۱:۳۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : oia zoghal sama01 meatza
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS