/
  • جایگزینی متن یونیکد با استفاده از preg_match

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

    حالت موضوعی | حالت خطی جایگزینی متن یونیکد با استفاده از preg_match
    نویسنده پیام
    Huji آفلاین
    عضو جدید
    **

    ارسال‌ها: 6
    تاریخ عضویت: ۱۳۸۹ تير ۹
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #1
    جایگزینی متن یونیکد با استفاده از preg_match
    تا به حال برای من پیش نیومده بود که متن یونیکد رو با استفاده از preg_match جایگزین کنم و حالا که پیش اومده کاملاً گیج شدم.

    به کد زیر نگاه کنید:

    کد PHP:
    <html>
    <
    meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </
    head>
    <
    body>
    <?
    php
    // Case 1
    $out preg_replace("#(\b|^)فیلتر(\b|$)#i""\\1".'*****'."\\2"" فیلتر \r\n فیلتر \r\n فیلترها \r\n فیلتر.ها \r\n");
    echo 
    nl2br($out);
    // Case 2
    $out preg_replace("#(\b|^)تست(\b|$)#i""\\1".'*****'."\\2"" تست \r\n تست \r\n تست‌ها \r\n تست.ها \r\n");
    echo 
    nl2br($out);
    // Case 3
    $out preg_replace("#^تست$#i""\\1".'*****'."\\2"" تست \r\n تست \r\n تست‌ها \r\n تست.ها \r\n");
    echo 
    nl2br($out);
    ?>
    </body>
    </html> 
    اگر کد را اجرا کنید می‌بینید که در حالت اول، فقط عبارت «فیلترها» به «*****ها» تبدیل می‌شود و عبارات دیگر اصلا match نمی‌شوند. به طرز جالبی، در حالت دوم و در مورد واژه تست قضیه برعکس است و فقط در «تست‌ها» match نمی‌شود و در بقیه حالاتش تابع عمل می‌کند.


    در حالت سوم هم از b\ برای تعیین حدود کلمه استفاده نکردم و فقط ^ و $ را به کار بردم که در این حالت اصلاً متن فارسی match نمی‌شود!

    سوال این جاست که من چه اشتباهی می‌کنم و چه طور می‌توانم این کد را اصلاح کنم تا در تمام حالات، کلمه مورد نظر من را جایگزین کند.
    (آخرین ویرایش در این ارسال: ۱۳۸۹ تير ۱۲ ۰۵:۴۷ عصر، توسط Y.P.Y.)
    ۱۳۸۹ تير ۹ ۰۴:۱۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #2
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    http://forum.iranphp.org/Thread-%D8%AA%D...8%B3%DB%8C
    __________________________________________________________________________
    ۱۳۸۹ تير ۹ ۰۶:۲۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Huji آفلاین
    عضو جدید
    **

    ارسال‌ها: 6
    تاریخ عضویت: ۱۳۸۹ تير ۹
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #3
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    ممنون از پاسخ اما پسوند u/ کار من رو راه ننداخت. اگر ممکنه کدی که کار می‌کنه برای من بفرستید که بفهمم دقیقاً باید چه کنم.
    ۱۳۸۹ تير ۹ ۰۶:۳۶ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Huji آفلاین
    عضو جدید
    **

    ارسال‌ها: 6
    تاریخ عضویت: ۱۳۸۹ تير ۹
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #4
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    راهنمایی بیشتری نمی‌کنید؟
    ۱۳۸۹ تير ۱۱ ۱۰:۳۲ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    molana آفلاین
    چالیست - chalist
    *******

    ارسال‌ها: 1,764
    تاریخ عضویت: ۱۳۸۷ آذر ۳۰
    اعتبار: 60
    تشکرها : 1644
    ( 1550 تشکر در 1015 ارسال )
    ارسال: #5
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    متاسفانه این سایت هم گویا به عاقبت سایت دات نت دچار می شه.

    هیچ مدیری عملاً سر نمی زنه اینجا
    __________________________________________________________________________
    همه جوره اش رو داریم ظاهرن
    ۱۳۸۹ تير ۱۲ ۰۴:۲۴ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : parsig
    admin آفلاین
    وحید سهرابلو
    **********

    ارسال‌ها: 5,697
    تاریخ عضویت: ۱۳۸۷ آذر ۲۴
    اعتبار: 100
    تشکرها : 1362
    ( 6197 تشکر در 3438 ارسال )
    ارسال: #6
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    این حرفها چیه؟
    من با همه درگیری های شدید که دارم و اینکه دسترسی به اینترنت واسم خیلی خیلی مشکل شده هر روز سر می زنم.
    اگر منظور جواب دادن به این پست هست خب حتما جوابی ندارم. در ضمن من که اینجا فقط مدیر نیستم مثلا ۷ تا مدیر داریم.
    ۱۳۸۹ تير ۱۲ ۰۵:۲۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,780
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #7
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    Huji شما دارید با تابعی اینکارو انجام میدید که قابلیت کار دقیق با رشته های Unicode رو نداره... باید از توابع Multibyte String استفاده کنید:

    http://ir.php.net/manual/en/ref.mbstring.php

    mb_ereg_match
    mb_ereg_replace
    mb_eregi_replace
    mb_eregi
    ...
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    (آخرین ویرایش در این ارسال: ۱۳۸۹ تير ۱۲ ۰۵:۵۴ عصر، توسط Y.P.Y.)
    ۱۳۸۹ تير ۱۲ ۰۵:۵۱ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Huji آفلاین
    عضو جدید
    **

    ارسال‌ها: 6
    تاریخ عضویت: ۱۳۸۹ تير ۹
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #8
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    ممنون از پاسخ اما با mb_eregi_replace که اصلاً هیچ کدوم از جایگزینی‌ها انجام نشد. برای همین عرض کردم لطفاً کدی که کار می‌کنه بدید.
    ۱۳۸۹ تير ۱۲ ۰۹:۵۹ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آفلاین
    ناظم کل
    *******

    ارسال‌ها: 2,780
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 103
    تشکرها : 2181
    ( 4856 تشکر در 2220 ارسال )
    ارسال: #9
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    Expression تون اشتباهه.
    یکسری توابع کاربردی با mb_eregi_replace در اینجا نوشته شده:
    http://ir.php.net/manual/en/ref.mbstring.php
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

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

    ارسال‌ها: 6
    تاریخ عضویت: ۱۳۸۹ تير ۹
    اعتبار: 0
    تشکرها : 0
    ( 0 تشکر در 0 ارسال )
    ارسال: #10
    RE: جایگزینی متن یونیکد با استفاده از preg_match
    Y.P.Y ممکنه اشتباه expression رو به من توضیح بدید؟
    ۱۳۸۹ تير ۱۴ ۰۹:۴۷ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

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


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