نمایش نتایج 1 تا 7 از 7

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

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1388
    محل زندگی
    کرج
    پست
    321

    برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست

    با درود
    مشکلم رو توضیح میدم.اگر طولانی شد بخاطر اینه که می خوام متوجه بشید.

    من می خوام یه سری اطلاعات از یه سایت فارسی خارج کنم.البته کپی برداری و این حرفا نیست.خیالتون راحت.اطلاعات دریافتی فارسیه و همه چی بخوبی انجام میشه.مشکل در رشته دریافتی مربوط به نام ماه است.تاریخ رو بصورت 09 اردیبهشت 94 درج کردن بطور مثال.من رشته رو می گیرم و با explode قسمتهاش رو جدا می کنم و وقتی نام ماه رو چاپ می کنم اردیبهشت چاپ میشه.حالا می خوام همین مقدار رشته ای رو به عدد متناظر با رشته ماه که همون 2 باشه تبدیل کنم.رشته رو به یه تابع که توش یه سری if گذاشتم ارسال می کنم و با این کد

    if(!strcmp($var, 'اردیبهشت')){
    return '2';
    }

    بررسی می کنم که اگر مقدار برابر بود عدد متناظرش رو برگردونه.مقادیر درست ارسال می شه ولی هیچ کدوم از if ها برای هیچ نام ماهی مقدار برنمی گردونن.

    این تابع مربوط به تبدیل نام ماه به عددش که خلاصه اش رو گذاشتم

    function to_int_months($var){
    if(!strcmp($var,'فروردين')){
    return '1';
    }
    if(!strcmp($var,'اردیبهشت')){
    return '2';
    }
    .
    .
    .

    وقتی کد زیر اجرا میشه مقدار رشته نام ماه چاپ میشه و جلوش هیچی نمیاد یعنی تبدیل نشده(باید عدد متناظرش چاپ بشه).وقتی نام ماه چاپ شده رو به عنوان پارامتر ارسال می کنم به تابع مقدار متناظرش برمی گرده و 2 بطور مثال چاپ میشه.
    echo $arr[1].'=-='.to_int_months($arr[1]);


    میشه راهنمایی کنید که کجای کارم مشکل داره یا چطوری می تونم این کار رو انجام بدم یعنی تبدیل رشته ماه فارسی به عدد متناظرش.
    ممنون

  2. #2
    کاربر دائمی
    تاریخ عضویت
    خرداد 1391
    محل زندگی
    تهران
    پست
    409

    نقل قول: برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست

    به این شکل باید کدتون کار کنه اما شاید فاصله بین کلمه ها هست شما trim هم انجام بدید
    درضمن میتونید مقایسه تون رو به این شکل مانند اعداد هم انجام دهید

    if($var=='test'){
    return 1;
    }

    قبل اجرا یه var_dump از متغییر بگیرید و چک کنیدکه فاصله نداشته باشه و نوعش string باشه

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1388
    محل زندگی
    کرج
    پست
    321

    نقل قول: برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست

    trim رو قبل از ارسال مقدار به تابع زدم و == رو هم امتحان کردم ولی جواب نداد.در ضمن مقدار رشته ها هم همگی string هست.

  4. #4

    نقل قول: برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست

    بهترین راه این هست که شما از switch استفاده کنید اصولا switch برای این کار استفاده می شود

  5. #5
    کاربر دائمی آواتار amin1softco
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    پای آن سرو بلند
    پست
    1,832

    نقل قول: برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست


  6. #6
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اراک
    پست
    409

    نقل قول: برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست

    مشکل از کاراکترهای فارسی و ... نیست، مشکل از اون بی وجدان هایی هست که نگاره های فارسی رو در فهرست یونیکد نگاره های عربی آوردند و چندین شکل برای حروف درآوردند.

    مثلا ما چندین نوی "ی" داریم که کد هر کدام با دیگری متفاوت هست، چندین نوع ه و ...، پس طبیعی هست که شرط شما false برگردونه.

    این چند نمونه "ﯼ ی ﻱ ﯼ" که اگر کد هر کدوم رو چاپ کنید با دیگری متفاوته.

    شما باید برای مقایسه، اصل رشته "اردیبهشت" رو از همون منبع بگیرید و در کدتون استفاده کنید.

  7. #7

    نقل قول: برای رفع این مشکل راهنمایی کنید.مربوط به رشته های فارسی هست

    من این کد رو نوشتم همین الان و کاملا درست داره جواب می ده
    <?php
    if (isset($_POST['submit'])){
    switch ($_POST['text']) {

    case 'اردیبهشت' :
    echo 'ok';

    break;
    case 'مهر' :
    echo 'ok';

    break;
    case 'فروردین' :
    echo 'ok';

    break;
    }


    }
    ?>
    <html>
    <meta charset="utf-8"/>
    <body>
    <form action="" method="post">
    <input type="text" name="text" >
    <input name="submit" type="submit">
    </form>

    </body>
    </html>

    همون طور که گفتم از switch استفاده بشه هیچ مشکلی ندارید

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: شنبه 08 تیر 1392, 21:47 عصر
  2. لطفا برای پیدا کردن فایل ایندکس این سایت راهنمایی کنید
    نوشته شده توسط nekooee در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 5
    آخرین پست: سه شنبه 17 خرداد 1390, 23:52 عصر
  3. مشکل در تابع .equals - مقایسه رشته های فارسی
    نوشته شده توسط Mah در بخش Java ME : نگارش میکرو جاوا
    پاسخ: 1
    آخرین پست: سه شنبه 27 اسفند 1387, 11:04 صبح
  4. درخواست کمک برای حل این مشکل
    نوشته شده توسط setak در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: پنج شنبه 24 فروردین 1385, 08:49 صبح
  5. برای این مشکل چه راه حلی پیشنهاد میکنید ؟ ( فارسی)
    نوشته شده توسط khafanovich در بخش برنامه نویسی در Delphi
    پاسخ: 6
    آخرین پست: سه شنبه 13 دی 1384, 01:50 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •