PDA

View Full Version : سوال: رفتن به سطر دلخواه در فایل



esteftaats1368
پنج شنبه 22 فروردین 1392, 10:58 صبح
با سلام دوستان عزیز.
ممنون میشم جواب سوالمو بدین.

فکر کنید فایلی دارید بنام file.txt
و می خوایم که به مثلا به سطر 154 بریم و اولین کاراکترش رو بخونیم.

من تمام دستوراتش رو می دونم ولی نمی دونم چجوری باید به سطر 154 رفت.
خوب حالا چجوری باد اشاره گر رو به سطر 154 برد.
خیلی ممنون

Tarragon
پنج شنبه 22 فروردین 1392, 11:24 صبح
بنظرم شما باید فایل رو با file_get_ contents بگیری بعدش با explode و ارماگون اول "\n" اونو به ارایه تبدیل کنی بعدش ارایه شما 153 رو بگیری بعد با strpos اولین حرفش رو به دست بیاری.

pary_daryayi
پنج شنبه 22 فروردین 1392, 11:26 صبح
تابع file هر خط فایل رو در یک عنصر از آرایه قرار میده .


$count=file('test.txt');
$h=$count[154];


خط 154 رو در متغیر $h داریم . با تابعی که اولین کاراکتر رو میخونه میتونیم بدست بیاریم (اسمش یادم نیست )
خیلی وقته با فایل ها کار نکردم ولی منطقش فکر کنم همینه .

esteftaats1368
پنج شنبه 22 فروردین 1392, 11:53 صبح
بنظرم شما باید فایل رو با file_get_ contents بگیری بعدش با explode و ارماگون اول "\n" اونو به ارایه تبدیل کنی بعدش ارایه شما 153 رو بگیری بعد با strpos اولین حرفش رو به دست بیاری.


تابع file هر خط فایل رو در یک عنصر از آرایه قرار میده .


$count=file('test.txt');
$h=$count[154];


خط 154 رو در متغیر $h داریم . با تابعی که اولین کاراکتر رو میخونه میتونیم بدست بیاریم (اسمش یادم نیست )
خیلی وقته با فایل ها کار نکردم ولی منطقش فکر کنم همینه .
من تغییرات رو توی کدها دادم.با کد زیر تونستم یه سطر دلخواه از فایل دسترسی داشت باشم.


$filename = "readme.txt";
$handle = fopen($filename, "r");
$count=file('readme.txt');
$h=$count[1];
?>
<pre>
<?php
echo "$h";
?>
</pre>
<?php
fclose($handle);

?>

الان سطردوم توی $h هست ولی مشکل اینه که حالا چه جوری باید اشاره گر رو به سطر دوم برد؟

Unique
پنج شنبه 22 فروردین 1392, 12:00 عصر
استفاده از تابع فایل نیاز به fopen و fclose نداره ! درضمن شما خروجی را اشتباه متوجه شدن h$ تعداد خطوط را بر نمیگردونه بلکه یه ارایه بر میگردونه که هر خط از فایل توی یک اندیس اون واقع شده و اندیس شماره ۱۵۳ خط ۱۵۴ هست و شما میتونید string ذخیره شده توی این اندیس را هر بلایی سرش بیارین و بعد با تابع file_put_contents و استفاده از implode فایل را مطابق تغییرات ذخیره کنید.

دیروز یادمه دقیقا همین کار را توی یک پست با کد توضیح دادم جستجو کنید پیدا میکنید.

esteftaats1368
پنج شنبه 22 فروردین 1392, 12:18 عصر
استفاده از تابع فایل نیاز به fopen و fclose نداره ! درضمن شما خروجی را اشتباه متوجه شدن h$ تعداد خطوط را بر نمیگردونه بلکه یه ارایه بر میگردونه که هر خط از فایل توی یک اندیس اون واقع شده و اندیس شماره ۱۵۳ خط ۱۵۴ هست و شما میتونید string ذخیره شده توی این اندیس را هر بلایی سرش بیارین و بعد با تابع file_put_contents و استفاده از implode فایل را مطابق تغییرات ذخیره کنید.

دیروز یادمه دقیقا همین کار را توی یک پست با کد توضیح دادم جستجو کنید پیدا میکنید.




دوست عزیز. می دونم که $h تعداد خطوط را بر نمی گردونه.
قسمتی از کاری که می خواستم رو با کمک دوستی که این کد رو معرفی کردن حل کردم.

ولی مشکل اینه که من می خوام اشاره گر رو به خط خاصی مثلا 154 ببرم و بعدش با تابع gets() و گذاشتنش توی یه حلقه تک تک کاراکترها رو بررسی کنم که فعلا این مشکلم حل نشده.

Unique
پنج شنبه 22 فروردین 1392, 16:54 عصر
شما نیازی به fgets ندارین !!!!!


$filename = "readme.txt";
$lines = file('readme.txt');
$row = $lines[153];
// do what you want with row 154 now !
$lines[153] = $row;
file_put_contents($filename,implode("",$lines));

حالا مشکل شما چیه ؟

esteftaats1368
جمعه 23 فروردین 1392, 00:50 صبح
شما نیازی به fgets ندارین !!!!!


$filename = "readme.txt";
$lines = file('readme.txt');
$row = $lines[153];
// do what you want with row 154 now !
$lines[153] = $row;
file_put_contents($filename,implode("",$lines));

حالا مشکل شما چیه ؟
دوست عزیز مشکل حل شد. ممنون