مشکل خواندن سطر در 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 هست رو بخونم ولی خالی نشون میده علتش چیه دوستان میتونند راهنمایی کنند
نقل قول: مشکل خواندن سطر در preg_match
اگر فرمت فایلتون ویندوزه باید کارکتر \n رو با \r\n جایگزین کنید. کد رو اگر بصورت زیر بنویسید چه فرمت فایل unix باشه چه windows کار میکنه:
preg_match("/$text\r?\n(.*)/", $string, $matches);
در unix خط جدید (new line) با کارکتر LF ایجاد میشه اما در ویندوز با دو کارکتر CR و LF.
CR = \r
LF = \n
کدی که نوشتین اگر جنبه تمرینی نداره چندان جالب نیست و بهتره از روش دیگری استفاده کنید.
نقل قول: مشکل خواندن سطر در 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);
نقل قول: مشکل خواندن سطر در preg_match
اگر میخواین اولین مقدار عددی بعد از salam رو بخونید این روش سادهتریه:
preg_match("/$text\D*(\d+)/", $string, $matches);
نقل قول: مشکل خواندن سطر در preg_match
نقل قول:
نوشته شده توسط
sd702004
اگر میخواین اولین مقدار عددی بعد از salam رو بخونید این روش سادهتریه:
preg_match("/$text\D*(\d+)/", $string, $matches);
واقعا لذت بردم عالی بود واقعا دستت درد نکنه
$string='ME
654TPB
salam
123fft
gg654';
$text="salam";
اگر بخواهم اولین مقدار عددی قبل از salam رو بخونم که عدد 654 میشه
چطوری میشه
نقل قول: مشکل خواندن سطر در preg_match
خواهش میکنم. برای این کار کافیه جای (\d+) رو با $text عوض کنید.
preg_match("/(\d+)\D*$text/", $string, $matches);
نقل قول: مشکل خواندن سطر در 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);
مقدار رو خالی نشون میده
نقل قول: مشکل خواندن سطر در preg_match
پرانتز جزو کارکترهای سینتکس regex محسوب میشه. اگه بخوای از خود پرانتز استفاده کنید باید اونو escape کنید:
$text = "salam\)"
نقل قول: مشکل خواندن سطر در preg_match
نقل قول:
نوشته شده توسط
sd702004
پرانتز جزو کارکترهای سینتکس regex محسوب میشه. اگه بخوای از خود پرانتز استفاده کنید باید اونو escape کنید:
$text = "salam\)"
واقعا ممنون بابت زمانی که برای من گذاشتی
پس اینطور اصلا به این مورد توجه نکرده بودم از کجا میتونم لیست کارکترهای سینتکس regex رو پیدا کنم که اگر موردی پیش اومد بتونم اونو escape کنم
نقل قول: مشکل خواندن سطر در preg_match
خواهش میکنم. تو صفحه زیر بصورت خلاصهشده این موارد نمایش داده شده:
https://quickref.me/regex#regex-in-php