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

نام تاپیک: مشکل خواندن سطر در preg_match

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    49

    مشکل خواندن سطر در preg_match

    سلام

    در متن

    $string='ME
    salam
    123ff
    tgg
    654
    ';

    $text="salam";


    با کد دستوری

    preg_match("/$text\n(.*)/", $string, $matches);
    echo 'I need this line: ' . $matches[1] ;


    سعی کردم مقدار سطر بعدی salam که 123ff هست رو بخونم ولی خالی نشون میده علتش چیه دوستان میتونند راهنمایی کنند

  2. #2
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: مشکل خواندن سطر در preg_match

    اگر فرمت فایل‌تون ویندوزه باید کارکتر ‎\n رو با ‎\r\n جایگزین کنید. کد رو اگر بصورت زیر بنویسید چه فرمت فایل unix باشه چه windows کار میکنه:
    preg_match("/$text\r?\n(.*)/", $string, $matches);

    در unix خط جدید (new line) با کارکتر ‎LF ایجاد میشه اما در ویندوز با دو کارکتر ‎CR و LF.
    CR = \r
    LF = \n

    کدی که نوشتین اگر جنبه تمرینی نداره چندان جالب نیست و بهتره از روش دیگری استفاده کنید.
    آخرین ویرایش به وسیله sd702004 : یک شنبه 05 فروردین 1403 در 13:52 عصر

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    49

    نقل قول: مشکل خواندن سطر در preg_match

    نقل قول نوشته شده توسط sd702004 مشاهده تاپیک
    اگر فرمت فایل‌تون ویندوزه باید کارکتر ‎\n رو با ‎\r\n جایگزین کنید. کد رو اگر بصورت زیر بنویسید چه فرمت فایل unix باشه چه windows کار میکنه:
    preg_match("/$text\r?\n(.*)/", $string, $matches);

    در unix خط جدید (new line) با کارکتر ‎LF ایجاد میشه اما در ویندوز با دو کارکتر ‎CR و LF.
    CR = \r
    LF = \n

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

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

    $string='ME
    salam

    123fft
    gg
    654';

    $text="salam";



    بعد سلام یک سطر خالی هست طوری قرار بدهم که سطر اگر خالی بود سطر پایین تر را بخونه تا جایی که مقدار عددی باشه برای مقدار عددی از ([\d\/ \.]*) استفاده میکنم الان کد ذیل رو چطوری تغییر بدم که بعد salam اولین مقدار عددی را بخونه که 123 هست کمی پیچیده شد

    preg_match("/$text\r?\n([\d\/ \.]*)/", $string, $matches);
    آخرین ویرایش به وسیله kiapmc : یک شنبه 05 فروردین 1403 در 14:12 عصر

  4. #4
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: مشکل خواندن سطر در preg_match

    اگر می‌خواین اولین مقدار عددی بعد از salam رو بخونید این روش ساده‌تریه:
    preg_match("/$text\D*(\d+)/", $string, $matches);

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    49

    نقل قول: مشکل خواندن سطر در preg_match

    نقل قول نوشته شده توسط sd702004 مشاهده تاپیک
    اگر می‌خواین اولین مقدار عددی بعد از salam رو بخونید این روش ساده‌تریه:
    preg_match("/$text\D*(\d+)/", $string, $matches);

    واقعا لذت بردم عالی بود واقعا دستت درد نکنه

    $string='ME
    654TPB

    salam
    123fft
    gg654';

    $text="salam";


    اگر بخواهم اولین مقدار عددی قبل از salam رو بخونم که عدد 654 میشه

    چطوری میشه

  6. #6
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: مشکل خواندن سطر در preg_match

    خواهش میکنم. برای این کار کافیه جای ‎(\d+) رو با ‎$text عوض کنید.
    preg_match("/(\d+)\D*$text/", $string, $matches);

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    49

    نقل قول: مشکل خواندن سطر در preg_match

    نقل قول نوشته شده توسط sd702004 مشاهده تاپیک
    خواهش میکنم. برای این کار کافیه جای ‎(\d+) رو با ‎$text عوض کنید.
    preg_match("/(\d+)\D*$text/", $string, $matches);

    عالی بود خدا خیرت بده

    یک مشکلی هم هست این که برای مثال اگر

    $string='ME
    654TPB
    salam)

    123ff
    tgg654';

    $text="salam)"

    ;


    وقتی ( باشه نمیتونه بخونه خالی نشون میده در حالی که در STRING و TEXT کاراکتر ( هست اگر ( رو با دیگر سیمبل ها مثل @ جایگزین میکنم میخونه نمیدونم مشکل با ( چیه

    preg_match("/$text\D*(\d+)/", $string, $matches);


    مقدار رو خالی نشون میده

  8. #8
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: مشکل خواندن سطر در preg_match

    پرانتز جزو کارکترهای سینتکس regex محسوب میشه. اگه بخوای از خود پرانتز استفاده کنید باید اونو escape کنید:
    $text = "salam\)"

  9. #9
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    49

    نقل قول: مشکل خواندن سطر در preg_match

    نقل قول نوشته شده توسط sd702004 مشاهده تاپیک
    پرانتز جزو کارکترهای سینتکس regex محسوب میشه. اگه بخوای از خود پرانتز استفاده کنید باید اونو escape کنید:
    $text = "salam\)"
    واقعا ممنون بابت زمانی که برای من گذاشتی

    پس اینطور اصلا به این مورد توجه نکرده بودم از کجا میتونم لیست کارکترهای سینتکس regex رو پیدا کنم که اگر موردی پیش اومد بتونم اونو escape کنم

  10. #10
    کاربر تازه وارد آواتار sd702004
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    مشهد
    پست
    90

    نقل قول: مشکل خواندن سطر در preg_match

    خواهش میکنم. تو صفحه زیر بصورت خلاصه‌شده این موارد نمایش داده شده:
    https://quickref.me/regex#regex-in-php

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

  1. سوال: نوشتن الگو با preg_match
    نوشته شده توسط miladfst در بخش PHP
    پاسخ: 0
    آخرین پست: چهارشنبه 24 اردیبهشت 1399, 14:09 عصر
  2. پاسخ: 0
    آخرین پست: جمعه 22 شهریور 1392, 17:46 عصر
  3. سوال: کمک برای preg_match
    نوشته شده توسط mamali-mohammad در بخش PHP
    پاسخ: 5
    آخرین پست: دوشنبه 05 فروردین 1392, 12:56 عصر
  4. در مورد الگوها در تابع preg_match
    نوشته شده توسط morteza_naderloo در بخش PHP
    پاسخ: 1
    آخرین پست: شنبه 19 تیر 1389, 21:53 عصر
  5. تابع preg_match
    نوشته شده توسط sina1370 در بخش PHP
    پاسخ: 2
    آخرین پست: دوشنبه 07 تیر 1389, 22:22 عصر

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

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