مشاهده دست آورد نظرسنجی: آیا این مقاله را قابل می دانید که ادامه پیدا کند؟

رای دهنده
50. شما نمی توانید در این رای گیری رای بدهید
  • بله خوب است

    48 96.00%
  • خیر مفید نیست

    0 0%
  • فعلا بنویس تا ببینیم چی میشه!

    2 4.00%
صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 69

نام تاپیک: آموزش کامل عبارات منظم(RegularExpressions) در PHP

  1. #1

    آموزش کامل عبارات منظم(RegularExpressions) در PHP

    به نام خدا
    با یه جستجو در تالارها متوجه شدم که کمبود یک مقاله جمع وجور در این زمینه به زبان فارسی احساس می شود به همین دلیل تصمیم گرفتم یک آموزش کامل کار با عبارات منظم در PHP را در حد توان خود شروع کنم.
    از دوستان خواهشمندم علاوه بر قوانین سایت موارد زیر را در نظر داشته باشند :

    • برای نظم تاپیک از ارسال موارد غیر ضروری خودداری کنید.
    • برای تشکر فقط از کلید تشکر استفاده کنید
    • در صورتی که سوال دارید در تاپیک جداگانه مطرح کنید تا رسیدگی شود
    • در صورت مشاهده ی اشتباه با پیغام خصوصی به بنده اطلاع دهید تا اصلاح نمایم
    • بنده سعی می کنم مطالب را کامل بنویسم اما چون این مبحث بسیار گسترده است ممکن است مطالبی جا بماند که به مرور آنها را اضافه خواهم کرد البته نه با افزودن پست جدید بلکه با ویرایش پستهای قبلی انشاءالله
    آخرین ویرایش به وسیله صابر طهماسبی : سه شنبه 22 تیر 1389 در 10:01 صبح دلیل: تکمیل

  2. #2

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    قسمت اول-کاراکتر های ویژه در عبارات منظم

    فرض را بر این گذاشتم که دوستانی که این تاپیک را می خوانند می دانند عبارات منظم چیست و کاربرد آنها در کجاست.
    اما مروری گذرا بر عبارات منظم :

    الگو یا pattern یک عبارت منظم است که ما می خواهیم آن را در متنی جستجو کنیم و عملیات لازم را با توابع اینکار با آن انجام دهیم.
    مثال: فرض کنید متنی داریم که در آن یک عدد آمده است مثلا متنی حاوی اطلاعات آب و هوای یک شهر دارم که دمای فعلی در آن با یک عدد صحیح مشخص شده است با استفاده از یک الگوی خاص و یکی از توابع کار با الگوها می خواهیم این عدد پیدا کنیم و از متن استخراج کنیم.

    این نکته را هم عرض کنم ممکن است در یکی دو قسمت اول مطالب برای شما گنگ باشد هیچ نگران نباشید خودتان حتما مثالها را تست کنید و سعی کنید با دادن مقادیر مختلف کاربرد آنها را در ذهن خود تثبیت کنید.


    شروع می کنیم
    در کار با عبارات منظم به دو چیز نیاز داریم :

    1. توابع کار با عبارات منظم
    2. الگوها(patterns)


    الگو باید بین دو کاراکتر جدا کننده قرار گیرد این کاراکترها معمولا //،## و یا @@ می باشند.
    کاراکترهای جدا کننده برای توابع کار با الگو ابتدا و انتهای الگو را مشخص می کنند.

    یک تعریف :

    • رشته ی تهی : رشته ای که هیچ کاراکتری نداشته باشد یا به عبارتی طول آن 0 باشد.


    الگو حاوی متا کاراکترها(همون کاراکترهای ویژه) و کاراکترهای عمومی است.
    در زیر بخشی از کاراکترهای ویژه را به همراه توضیح مختصر مشاهده می کنید :

    • . در الگو به معنای این است که هر کاراکتری می تواند ظاهر شود(فقط یک کاراکتر).
    • * در الگو به این معناست که عبارت قبل از آن می تواند 0 بار یا بیشتر تکرار شود.
    • + در الگو به این معناست که عبارت قبل از آن می تواند 1 بار یا بیشتر تکرار شود.
    • ? در الگو به معنای این است که عبارت قبل از آن می تواند ظاهر نشود یا 1 بار ظاهر شود.
    • {num} عبارت قبل از این به تعداد num باید تکرار شود نه بیشتر و نه کمتر)num یک عدد صحیح است).
    • {m,n} عبارت قبل از این به تعداد حداقل m و حداکثر بار باید تکرار شود نه بیشتر و نه کمتر)n , m هردو اعداد صحیح هستند).
    • () هر عبارتی بین پرانتز قرار گیرد به عنوان یک واحد حساب می شود.
    • [] یک کلاس کاراکتر را مشخص می کند به این معنا که فقط یکی از کاراکتر های تعریف شده داخل آن می توانند ظاهر شوند.
    • - در الگو برای مشخص کردن محدوده به کار می رود مثلا 9-0.
    • ^ دو حالت می تواند داشته باشد 1.در ابتدای الگو به این معناست که عبارت مورد جستجو باید با عبارتی (کلمه،کاراکتر یا کلاس کاراکتر) که بعد از ^ می آید شروع شود.در داخل [] به این معناست که کاراکتر بعد از آن نباید ظاهر شود.
    • $ در پایان الگو به این معناست که عبارت مورد جستجو باید با عبارتی(کلمه،کاراکتر یا کلاس کاراکتر) که قبل از $ می آید شروع شود.
    • | یک عملگر است و به معنای یا می باشد.

    چند مثال از الگو ها را با هم بررسی می کنیم:

    .*
    گفتیم که . یعنی هرکاراکتری می تواند ظاهر شود و * به این معناست که قبل از آن می تواند 0 یا بیشتر بار تکرار شود پس الگوی فوق یعنی "رشته ای از تمام کاراکترها با طول 0 یا بیشتر" یا به عبارت دیگر "یک رشته تهی یا رشته ای غیر تهی با طول دلخواه"

    [0-9A-Z]
    می دانیم - برای مشخص کردن محدوده به کار می رود و [] برای مشخص کردن اینکه فقط یک کاراکتر از کاراکترهای تعریف شده در [] ظاهر شود پس مثال بالا "یک کاراکتر از 0 تا 9 یا یکی از حروف بزرگ الفبای انگلیسی"

    [a-d]
    گفتیم که [] یک کلاس کاراکتر را مشخص می کند و از کاراکترهای تعریف شده برای آن فقط یکی می تواند ظاهر شود پس الگوی فوق یعنی "یک کاراکتر از کاراکترهای a تا d"

    حالا بیایید کلاس کاراکتر را با * ترکیب کنیم :
    [0-9]*
    الگوی بالا الگوی یک "عدد صحیح با تعداد رقم 0 یا نامحدود" می باشد.

    .+
    فرق این الگو با الگوی اول در کاراکتر ویژه ی + می باشد پس بنا به تعریف این کاراکتر الگوی فوق یعنی "رشته ای از کاراکترها با طول حداقل 1 کاراکتر"
    ترکیب این کاراکتر را با کلاس کاراکترها دیگر واضح است.
    (ab)+
    عبارت داخل پرانتز یک واحد محسوب می شود پس الگوی فوق یعنی "رشته ای از تکرار عبارت ab که حداقل آن یک ab است"

    [^Ff]

    ^ در داخل [] به کار رفته به این معنا که "هر کاراکتری بجز F و f"

    ^(hello)(.*)(welcome)$
    الگوی فوق به این معناست :"1-رشته باید با hello شروع شده 2-سپس یک رشته با هر ترکیبی می تواند ظاهر شود3-و در نهایت رشته باید به welcome ختم شود"

    salam{1}
    فقط رشته ی salam را می پذیرد.
    go{1,100}gle
    حرف o بین 1 تا 100 بار می تواند ظاهر شود.
    (H|B)ook
    می دانیم | به معنای "یا" می باشد پس یکی از دو کلمه ی Hook یا Book پذیرفته می شود.
    آخرین ویرایش به وسیله صابر طهماسبی : سه شنبه 22 تیر 1389 در 09:59 صبح دلیل: تکمیل

  3. #3

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) درPHP-قسمت دوم-توابع عبارات منظم

    قسمت دوم-توابع عبارات منظم

    به طور خلاصه 4 تابع برای کار با عبارات منظم داریم:

    1. preg_split - یک رشته را با استفاده از یک الگوی عبارت منظم تکه تکه می کند و حاصل را به صورت یک آرایه بازگشت می دهد.
    2. preg_match - الگوی عبارت منظم را در رشته جستجو می کند.
    3. preg_replace - الگوی عبارت منظم را در یک رشته جستجو کرده و آن را متنی که به آن داده می شود جابجا می کند.
    4. preg_grep - الگوی عبارت منظم را در تمام عناصر یک آرایه جستجو کرده و موارد یافت شده را به صورت یک آرایه بازگشت می دهد.


    در ادامه برای هر کدام از توابع بالا یک مثال ذکر می کنیم :


    مثال1 :
    print_r(preg_split("@\s@", "Jane\tKate\nLucy Marion"));
    خروجی :


    Array
    (
    [0] => Jane
    [1] => Kate
    [2] => Lucy
    [3] => Marion
    )
    توضیح :
    در رشته ی مورد نظر 4 اسم داریم که با فاصله از هم جدا شده اند.s\ یک کلاس کاراکتر ویژه است که به جای کاراکتر جدا کننده از آن در الگو استفاده می کنیم.
    نکته : کاراکترهای ویژه(متا کاراکترها) برای راحتی کار از قبل تعریف شده اند چند مورد از آنها را در زیر می بینیم:

    • s\ هر نوع کاراکتر فاصله را مشخص می کند
    • S\ هر نوع کاراکتر بجز کاراکتر فاصله را مشخص می کند
    • d\ برای تشخیص اعداد دسیمال استفاده می شود
    • D\ شناسایی اعداد غیر دسیمال
    • uXXXX\ یک کاراکتر یونیکد که XXXX کد کاراکتر یونیکد می باشد را مشخص می کند

    در این مثال الگو را بین دو @ قرار دادیم، همانطور که در قسمت قبل گفته شد می توان از // یا ## هم استفاده کرد در مثالهای بعد از آنها هم استفاده می کنیم.

    مثال 2 :
    echo preg_match("#[a-z]#", "s");
    خروجی :
    1

    همانطور که در قسمت اول گفته شد [] یک کلاس کاراکتر است به این معنا که فقط یکی از کاراکتر های داخل آن پذیرفته می شود.الگوی مثال بالا به این معناست که اگر رشته به صورت یکی از کاراکتر های a تا z بود پذیرفته شود که رشته مورد نظر ما s می باشد پس پذیرفته می شود و تابع مقدار 1 را بازگشت می دهد.



    مثال 3 :
    echo preg_replace("/Jane/","Beky","I saw Jane. Jane was smart.");

    خروجی:
    I saw Beky. Beky was smart.

    در مثال بالا از هیچکدام ا کاراکترهای ویژه استفاده نکردیم پس فقط متن داده شده جستجو و جایگزین می شود.


    مثال 4 :

    print_r(preg_grep("#Jane#", array("Jane", "jane", "Joan", "JANE")));

    خروجی:
    Array
    (
    [0] => Jane
    )

    اگر دقت کنید در مثال بالا دستور استفاده شده به صورت پیشفرض حساس به متن است و بزرگی و کوچی حروف اهمیت دارد.


    مثال 5 :
    print_r(preg_grep("#Jane#i", array("Jane", "jane", "Joan", "JANE")));

    خروجی :
    Array
    (
    [0] => Jane
    [1] => jane
    [3] => JANE
    )

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




    آخرین ویرایش به وسیله صابر طهماسبی : سه شنبه 22 تیر 1389 در 09:05 صبح دلیل: تکمیل

  4. #4

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    ممنون بابت ایجاد این تایپیک،

    اگر ممکنه یه REgEXبرای چک حتما فارسی بودن رشته ورودی بگید. ممنون.


    ضمناً اینجا هم یه اموزش regExهست که فکر میکنم مفید باشه:
    http://www.barnamenevis.org/sh...d.php?p=993290

  5. #5

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط h.alizadeh مشاهده تاپیک
    ممنون بابت ایجاد این تایپیک،

    اگر ممکنه یه REgEXبرای چک حتما فارسی بودن رشته ورودی بگید. ممنون.


    ضمناً اینجا هم یه اموزش regExهست که فکر میکنم مفید باشه:
    http://www.barnamenevis.org/sh...d.php?p=993290
    ممنون از لینکی که گذاشتید
    باید با یونیکد آشنا باشید مثال برای فارسی بودن(میشه خلاصش کرد اما این کامله حتی اعراب و حروف الفبای عربی مثل ء هم ساپورت می کنه) :
    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",'دوست خوب');

    نتیجه :
    1

    موفق باشید

  6. #6

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP-قسمت سوم الگو های تودرتو

    قسمت سوم - الگوهای تودرتو

    همانطور که گفته شد عبارت داخل پرانتز به عنوان یک واحد به حساب می آید برای مثال شما می توانید در داخل پرانتز یک الگو تعریف کنید و بر حسب نیاز خود آن را در الگوی کلی به کار ببرید.
    به مثالهای زیر توجه کنید :
    echo preg_match("/book(shelf|worm)?$/", "book");

    خروجی:
    1


    مثال2:
    echo preg_match("/book(shelf|worm)?$/", "bookshelf");

    خروجی:
    1


    مثال3:
    echo preg_match("/book(shelf|worm)?$/", "bookworm");

    خروجی:
    1


    مثال4:
    echo preg_match("/book(shelf|worm)?$/", "bookstore");

    خروجی:
    0


    اگر با قواعد اولیه آشنا باشید یا پستهای قبلی را مطالعه کرده باشید تحلیل مثالهای بالا بسیار ساده می باشد.

  7. #7

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    سلا به همگی!
    من تست گرفتم منتها تست درست و جواب کاملا درست گرفتم.

    مشکل اکثریت دوستان اینه کا کپی - پیست میکنن کد بالایی و و تو کامپایلراشون جوواب 0 میگیرن
    اما خو بهتر یکبارم که شده این کد و بریزند تو notepad و اونو با encoding --- utf ذخیره کنن و نتیجه واقعی و ببینند
    آخرین ویرایش به وسیله $ M 3 H R D A D $ : پنج شنبه 18 شهریور 1389 در 21:32 عصر

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

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    این داره نتیجه 1 میده !!!!!!
    فکر کنم این پترنی که اقای طهماسبی نوشتند تعداد کمی از حروف رو پشتیبانی میکنه
    حتما شما یه چیزه دیگرو مقایشه کردید

  9. #9

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط binyaft مشاهده تاپیک
    این داره نتیجه 1 میده !!!!!!
    فکر کنم این پترنی که اقای طهماسبی نوشتند تعداد کمی از حروف رو پشتیبانی میکنه
    حتما شما یه چیزه دیگرو مقایشه کردید
    منم به هر حرفی مقایسه کردم 0 میده بیرون

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

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    من از Xampp استفاده میکنم الان هم داره 1 رو نشون میده

  11. #11

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط binyaft مشاهده تاپیک
    من از Xampp استفاده میکنم الان هم داره 1 رو نشون میده
    من هم از Xampp استفاده میکنم و 0 نشون میده
    سیستم عاملتون چیه؟

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

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    Xampp رو XP هست

  13. #13

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط binyaft مشاهده تاپیک
    Xampp رو XP هست
    مال من سون هست
    نمیدونم چی بگم
    بقیه دوستان هم امتحان کنند

  14. #14

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    آقا جان عزیزم قصد به چالش کشوندن نداشتم !!

    اما من از zend استفاده میکنم این 0 نشون میده به جز یک مورد اون ورودی خالی که یک نشون میده

  15. #15
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران، رشت
    پست
    711

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    برای من 1 می‌ده.

    من یه احتمالی می‌دم که مشکل encoding داشته باشید.
    اصولا این کد باید جواب بده. من در CharacterMap ویندوز چک کردم و تمام کاراکترهای فارسی رو پوشش می‌ده.

  16. #16

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    برای من هم 0 نشون میدهد

  17. #17
    کاربر دائمی
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    تهران
    پست
    147

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    من خیلی از کاراکترهارو چک کردم، مشکلی نداشت.
    --------------------
    من خیلی از کاراکترهارو چک کردم، مشکلی نداشت و داره درست کار می کنه.
    با سیستم عامل 7 روی wamp
    آخرین ویرایش به وسیله Vahid Faraji : شنبه 13 شهریور 1389 در 23:34 عصر دلیل: این پست به دلیل تکراری بودن به طور خودکار ادغام شده است.

  18. #18

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    این کد قابلیت انتقال نداره
    به دلیلی که نمیدونم چیه، هر جا یک چیز نمایش میده

  19. #19

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    برای من 1 نشون میده ویندوز سون xampp

    برای اونایی که 0 برمیگردونه دونه دونه کاکتر اصلی رو چک کنن ببینن در کدوم یکیشون ارورمیده. بعد با کم زیاد کردن unicode اونو پیدا کنن.و نتیجه رو اینجا بزارن

  20. #20

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    من این عبارت رو زدم

     echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",'دوست خوب');  

    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",'د');

    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",'ا');

    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",'ن');


    نتیجه شد

    0000

  21. #21
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران، رشت
    پست
    711

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    من همچنان مشکل encode رو دلیل این مشکل می‌دونم.
    این کد را وارد کنید:

    $str = "دوست خوب";

    echo 'Encoding is: <b>' . mb_detect_encoding($str) . "</b> and it is ";
    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",$str)? '<b>valid</b>' : '<b>invalid</b>';

    //
    خروجی باید این باشد:
    Encoding is: UTF-8 and it is valid

    امیدوارم مشکل حل بشه.

  22. #22

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    به دلایلی نامعلوم مشکل برای من پیش اومد و مقدار 0 داد .
    با کمی پیگیری فکر کنم مشکل رو حل کردم
    1.encoding فایل خود را به utf8 تبدیل کنید
    2.عبارت زیر رو داخل عبارت خود قرار دهید
    \x{003F}

    کامل:
    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}\x{003F}0-9]*$#u",'دوست خوب');


    بهتره از گزینه دو استفاده بشه.
    و نتیجه رو اینجا بزارید.

  23. #23
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران، رشت
    پست
    711

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    پس حدث من در مورد encoding درست بود.

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

  24. #24

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط $ M 3 H R D A D $ مشاهده تاپیک
    این که در هر صورت جوابش 0 میشه !
    درست تست نکردید
    می توانید از یکی از تست کننده های آنلاین استفاده کنید :

  25. #25

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط sama01 مشاهده تاپیک
    من همچنان مشکل encode رو دلیل این مشکل می‌دونم.
    این کد را وارد کنید:

    $str = "دوست خوب";

    echo 'Encoding is: <b>' . mb_detect_encoding($str) . "</b> and it is ";
    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]*$#u",$str)? '<b>valid</b>' : '<b>invalid</b>';

    //
    خروجی باید این باشد:
    Encoding is: UTF-8 and it is valid

    امیدوارم مشکل حل بشه.

    ولی خروجی این نیست
    این هست برای من
    Encoding is: UTF-8 and it is invalid
    این کد چون قابلیت انتقال نداره، گزینه خوبی برای استفاده نیست
    --------------------
    نقل قول نوشته شده توسط mohmadd مشاهده تاپیک
    به دلایلی نامعلوم مشکل برای من پیش اومد و مقدار 0 داد .
    با کمی پیگیری فکر کنم مشکل رو حل کردم
    1.encoding فایل خود را به utf8 تبدیل کنید
    2.عبارت زیر رو داخل عبارت خود قرار دهید
    \x{003F}
    کامل:
    echo preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}\x{003F}0-9]*$#u",'دوست خوب');
    بهتره از گزینه دو استفاده بشه.
    و نتیجه رو اینجا بزارید.
    من همچنان 0 هستم
    آخرین ویرایش به وسیله bestirani2 : یک شنبه 14 شهریور 1389 در 12:56 عصر دلیل: این پست به دلیل تکراری بودن به طور خودکار ادغام شده است.

  26. #26

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    ولی خروجی این نیست
    این هست برای من
    Encoding is: UTF-8 and it is invalid
    این کد چون قابلیت انتقال نداره، گزینه خوبی برای استفاده نیست
    --------------------

    من همچنان 0 هستم
    مطمئن باشید کد مشکل ندارد اگر با عبارات منظم و همچنین کدهای یونیکد آشنا باشید این مطلب را تایید می کنید
    همانطور که گفتممی توانید از تست کننده های آنلاین استفاده کنید که در شرایط کاملا استاندارد عبارت منظم مورد نظر را تست می کنند می توانید از لینک زیر استفاده کنید :

  27. #27

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط صابر طهماسبی مشاهده تاپیک
    مطمئن باشید کد مشکل ندارد اگر با عبارات منظم و همچنین کدهای یونیکد آشنا باشید این مطلب را تایید می کنید
    همانطور که گفتممی توانید از تست کننده های آنلاین استفاده کنید که در شرایط کاملا استاندارد عبارت منظم مورد نظر را تست می کنند می توانید از لینک زیر استفاده کنید :
    این که کد مشکل نداره درسته
    ولی من در مورد قابلیت حمل دارم صحبت میکنم
    نه درستی کد

  28. #28

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط صابر طهماسبی مشاهده تاپیک
    مطمئن باشید کد مشکل ندارد اگر با عبارات منظم و همچنین کدهای یونیکد آشنا باشید این مطلب را تایید می کنید
    همانطور که گفتممی توانید از تست کننده های آنلاین استفاده کنید که در شرایط کاملا استاندارد عبارت منظم مورد نظر را تست می کنند می توانید از لینک زیر استفاده کنید :
    کد هیچ مشکلی نداره .

    من همچنان 0 هستم
    برای من که جواب میده .
    نکته جالبی که پیدا کردم اینه که با یونیکدی که گذاشتم تمام کلمات فارسی در ANSI
    match میشن


    شما اینو تست کنید و نتیجه رو بدید تا ببینم چی میشه
    $str = 'دوست عزيز';
    for ($i = 0; $i < strlen($str); $i++)
    {
    echo ord(substr($str, $i, $i + 1)) . '<br />';
    }

  29. #29

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط mohmadd مشاهده تاپیک
    کد هیچ مشکلی نداره .


    برای من که جواب میده .
    نکته جالبی که پیدا کردم اینه که با یونیکدی که گذاشتم تمام کلمات فارسی در ANSI
    match میشن


    شما اینو تست کنید و نتیجه رو بدید تا ببینم چی میشه
    $str = 'دوست عزيز';
    for ($i = 0; $i < strlen($str); $i++)
    {
    echo ord(substr($str, $i, $i + 1)) . '<br />';
    }
    207
    230
    211
    202
    32
    218
    210
    237
    210

  30. #30

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    پس حدث من در مورد encoding درست بود.

    فقط دلیل اضافه کردن اون کد رو متوجه نشدم. اون کد معادل علامت سوال انگلیسی است.
    چه دلیلی برای درج اون وجود داره؟
    چون در Ansi کارکترهای unicode ذخیره نمیشن ,اما اگه ذخیره بشن ..... به چی تبدیل میشن ؟ loool

  31. #31

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نتیجه کار بنده :
    1.روش دوم در پست 22 کاملا اشتباهه .. چون همه کاکتر ها به علامت سئوال تبدیل میشن و بعد match میشن که در هر حالت 1 داده میشه
    اگه مقدار پارمتر دوم unicode باشه برای تست اون باید encoding صفحه utf8 باشه .
    اما در حالت کلی ما از form استفاه میکنیم. کاربر میاد اسمشو مینویسه و بعد submit رو میزنه
    اطلاعات پست میشن و بررسی میشه :


    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <form action="http://127.0.0.1/newtest.php" method="post">
    <input type="text" name="str" />
    <input type="submit" name="sub" />
    </form>

    <?php


    function test($str)
    {
    return preg_match("#^[\s\x{0621}-\x{063A}\x{0640}-\x{0691}\x{0698}-\x{06D2}0-9]+$#u",$str);
    }
    echo test($_REQUEST['str']);

    ?>
    --------------------

    <form action="http://127.0.0.1/newtest.php" method="post">
    <input type="text" name="str" />
    <input type="submit" name="sub" />
    </form>

    <?php

    echo $_REQUEST['str'];

    ?>
    در این حالت وقتی به page source نگاه میکنم به این حالته :


    میشه در مورد این توضیح بدید ؟
    آخرین ویرایش به وسیله mohmadd : یک شنبه 14 شهریور 1389 در 17:52 عصر دلیل: این پست به دلیل تکراری بودن به طور خودکار ادغام شده است.

  32. #32
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران، رشت
    پست
    711

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    مشکل همان unicode هست.
    صفحات شما به صورت utf-8 ذخیره نشده‌اند.
    تنها دلیل این مشکل این هست.
    صفحات خود را با encoding درست ذخیره کنید.

  33. #33

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    در مورد Encoding باید charset را به utf-8 گذاشت که match بشن.
    در مورد سئوالم فقط میخوام بدونم اسم اینا چیه ؟؟

  34. #34
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران، رشت
    پست
    711

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    این‌ها کدهای یک کاراکتر utf-8 هستند که از ascii بیرون هستند.
    اگر دقت کنید اعداد آن مشابه اعدادی است در regex نوشتیم.

  35. #35

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    خوب مثلا من بخوام در موردش سرچ کنم اسمش چیه ؟

  36. #36
    کاربر دائمی
    تاریخ عضویت
    تیر 1386
    محل زندگی
    تهران، رشت
    پست
    711

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    هر چیزی تو مایه های uft8 encoding می‌تونه مطالب خوبی بیاره.
    این چند لینک را ببینید:
    UTF-8: The Secret of Character Encoding
    Character Sets / Character Encoding Issues
    خیلی خوب مفهوم encoding رو شرح داده‌اند.
    برخی لینک‌های داخلی‌شان هم ارزش‌مند است.

  37. #37

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    این که کد مشکل نداره درسته
    ولی من در مورد قابلیت حمل دارم صحبت میکنم
    نه درستی کد
    قابلیت حمل به این معناست که کد در سیستم های مختلف و شرایط یکسان درست کار کنه
    نه اینکه مثلا کد یک برنامه که تحت دات نت نوشته شده ببرید تو غیر دات نت!خوب معلومه کار نمی کنه چون شرایط اجرا براش مهیا نیست وقتی هم دارید با فارسی کار می کنید باید استاندارد یونیکد را در صفحات رعایت کنید.
    دلیل عدم اجرای این کد برای شما در encoding فایلها و صفحات است

    شرایط استاندارد کار با متون فارسی تحت وب به صورت زیر است :

    1. فایلها به صورت utf8 ذخیره شوند
    2. encoding صفحه در تگ meta روی utf-8 تنظیم شود
    3. کانکشن بانک اطلاعاتی شما utf-8 باشد

  38. #38

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط صابر طهماسبی مشاهده تاپیک
    قابلیت حمل به این معناست که کد در سیستم های مختلف و شرایط یکسان درست کار کنه
    نه اینکه مثلا کد یک برنامه که تحت دات نت نوشته شده ببرید تو غیر دات نت!خوب معلومه کار نمی کنه چون شرایط اجرا براش مهیا نیست وقتی هم دارید با فارسی کار می کنید باید استاندارد یونیکد را در صفحات رعایت کنید.
    دلیل عدم اجرای این کد برای شما در encoding فایلها و صفحات است

    شرایط استاندارد کار با متون فارسی تحت وب به صورت زیر است :

    1. فایلها به صورت utf8 ذخیره شوند
    2. encoding صفحه در تگ meta روی utf-8 تنظیم شود
    3. کانکشن بانک اطلاعاتی شما utf-8 باشد
    این حرف وقی صحیح هست که من اطلاعات رو از یک فرم بگیرم و از بانک اطلاعاتی بخوام
    این کد روی 5 تا سرور تست کردم که 2 تاشون جواب صحیح نمیداد و 3 تاشون میداد

    $str = 'دوست عزيز';
    for ($i = 0; $i < strlen($str); $i++)
    {
    echo ord(substr($str, $i, $i + 1)) . '<br />';
    }

    برای شما چی رو نشون میده؟

  39. #39

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    این حرف وقی صحیح هست که من اطلاعات رو از یک فرم بگیرم و از بانک اطلاعاتی بخوام
    بنده شرایط استاندارد کار با متون فارسی را در حالت کلی گفتم که فقط موارد 1و2 به مورد شما ربط دارد

    نقل قول نوشته شده توسط bestirani2 مشاهده تاپیک
    $str = 'دوست عزيز';
    for ($i = 0; $i < strlen($str); $i++)
    {
    echo ord(substr($str, $i, $i + 1)) . '<br />';
    }
    خوب این کد چه ربطی به عبارات منظمی که بنده نوشتم داره؟

  40. #40

    نقل قول: آموزش کامل عبارات منظم(RegularExpressions) در PHP

    نقل قول نوشته شده توسط صابر طهماسبی مشاهده تاپیک
    بنده شرایط استاندارد کار با متون فارسی را در حالت کلی گفتم که فقط موارد 1و2 به مورد شما ربط دارد



    خوب این کد چه ربطی به عبارات منظمی که بنده نوشتم داره؟
    می خواهم
    ببینم چه اعدادی میده
    اگر مربوط به utf-8 باشه باید اعداد متفاوتی با مال من بهتون بده

صفحه 1 از 2 12 آخرآخر

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

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