PDA

View Full Version : حرفه ای: تفسیر یک فایل



binyaft
دوشنبه 12 مهر 1389, 15:09 عصر
سلام دوستان
من دارم یه برنامه ای با php مینویسم که یه قسمتش نیاز داره که یه فایل رو تفسیر کنه
مثلا فایل رو باز میکنه و وقتی به دستور write رسید هر چی جلوی write بود رو میریزه داخل یه متغیر
خودم با regex تا یه جا هایی رفتم اما میخوام بدونم راهی بهتر و یا شاید سریعتر از regex وجود داره یا نه :متفکر:
ممنون

binyaft
دوشنبه 12 مهر 1389, 15:21 عصر
کسی نیست کمک کنه!!!! :(

snail22
دوشنبه 12 مهر 1389, 15:34 عصر
بهتره تا جایی که می‌شه از توابع string مثل explode implode substr strpos استفاده کنی
اگه نشد با regular expression

binyaft
دوشنبه 12 مهر 1389, 15:38 عصر
ممنون از پاسخ
ولی میخوام بدونم ایا راه دیگری بجز اینها هست یانه
در ضمن اگر بخوام یک کلمه رو طوری پیدا کنم که بین " " یا ' ' نباشه در regex باید چکار کنم ؟؟

[^"'](.*?)[^"']
این پترن بالایی کار نمیده
ممنون

binyaft
دوشنبه 12 مهر 1389, 16:30 عصر
نه کار نمیکنه :گریه:

snail22
دوشنبه 12 مهر 1389, 16:35 عصر
ببخشید pattern قبلی رو از خودم در آوردم! فکر کردم کلاس quote هم داریم که نداریم!

این pattern درسته



[\'"]([^\'"]*)[\'"]

binyaft
دوشنبه 12 مهر 1389, 16:46 عصر
خواهش میکنم
من کد زیر رو اجرا میکنم

preg_match_all('/[\'"]([^\'"]*)[\'"]/','write',$match);
print_r($match);

write رو وقتی میاره که اول و اخرش " و ' باشه
وقتی هم که اول هر کلاس ^ رو میذارم که کلاس رو منفی کنم باز هم نمیشه!!!!!
نمیدونم چکار کنم!

snail22
دوشنبه 12 مهر 1389, 17:03 عصر
فکر نمی‌کنم بشه مستقیم این کار رو کرد
ولی می‌تونی با preg_replace و این پترن من داخل کوتیشن ها رو حذف کنی

binyaft
دوشنبه 12 مهر 1389, 17:09 عصر
خوب شما همون غیر مستقیمشو راهنمایی کنید :D

sama01
دوشنبه 12 مهر 1389, 17:34 عصر
می‌شه مثال بزنید.
دقیقا چی می‌خواهید؟

binyaft
دوشنبه 12 مهر 1389, 17:53 عصر
میخوام یه قسمتی از یک فایل که نوشته write ، هر چیزی که جلوی این عبارت بود بریزه داخل متغییر $var فقط باید write باشه و نباید اولش و اخرش " و یا ' باشه من کلاس هارو منفی میکنم به صورت زیر

[^"]write
حالا اگر نوشته بشه

"write
قبول نمیکنه یعنی تا اینجا درسته اما وقتی قبول میکنه که به صورت زیر باشه

a write
یعنی write رو زمانی قبول میکنه که یک کاراکتر قبلش باشه در غیر اینصورت اصلا نمیشناسه!!!

snail22
دوشنبه 12 مهر 1389, 18:26 عصر
خوب زودتر اینو می‌گفتی دیگه!
شما در پترن باید اون syntax که می‌خواهید با‌شه رو تعریف کنید نه اون چیزی که نباید باشه


preg_match('/^[^"\']write\s(.*)$/i','&write some text to file',$m);
print_r($m);