PDA

View Full Version : سوال: خوندن متغیر از یه فایل txt بر اساس شماره خط



amiragha2
چهارشنبه 21 فروردین 1392, 00:37 صبح
سلام و خسته نباشید
من چند روز دیگه تحویل پروژه دارم.

استادمون ازم خواسته تو یه فایل txt چند تا متغیر تعریف کنم.
بعد تو یه فایل پی اچ پی بر اساس شماره خط اینا رو لودکنم.
مثلا تو فایل txt:

ali
hassan
hosein

بعد تو فایل پی اچ پی بگم محتویات خط سوم رو فراخونی کن که در اینجا بشه hosein

کی می تونه راهنماییم کنه؟ اگه میشه یه نمونه کد بزارین

ممنون

Unique
چهارشنبه 21 فروردین 1392, 00:57 صبح
خیلی راحته :


$lines = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
echo $lines[2]; // it is zero based !

amiragha2
چهارشنبه 21 فروردین 1392, 11:58 صبح
خیر از جوونیت ببینی، واقعا ممنون
بعد اینو واسه اطلاعات عمومی خودم می پرسم، اگه بخوام به Php بگم برو تو فایل txt تو لاین 3ومش چیزی بنویسی، چه کار باید بکنم؟

Unique
چهارشنبه 21 فروردین 1392, 16:46 عصر
اینطوری :


$lines = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
array_splice($lines, 2, 0, "new data for line 3");
file_put_contents('somefile.txt',implode(PHP_EOL,$ lines));

amiragha2
یک شنبه 25 فروردین 1392, 13:56 عصر
باز هم ممنون از شما ، فقط این یه مشکلی دارمو اونم اینه که من می خوام لاین REPLACE بشه و اگر من ازین دستور استفاده کنم، این بصورت new line می نویسه.
مثلا محتویات لاین 1 تا 4 :


MOHTAVIAT 1
MOHTAVIAT 2
MOHTAVIAT 3


حالا من با استفاده از این دستور به php می گم تو لاین 1 گزینه KHATE JADID رو بنویس .

بعد وقتی این دستور رو استفاده می کنم، محتویات خط 1 رو replace نمی کنه. بلکه یه خط جدید بهش اضافه می کنه و توش می نویسه
و نهایتا محتویات فایل 1 تا 4 اینطور می شه


KHATE JADID
MOHTAVIAT 1
MOHTAVIAT 2
MOHTAVIAT 3

Unique
دوشنبه 26 فروردین 1392, 02:07 صبح
خوب اینطوری :


$lines = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines[0] = 'KHATE JADID';// index should be (line - 1)
file_put_contents('somefile.txt',implode(PHP_EOL,$ lines));

amiragha2
سه شنبه 31 اردیبهشت 1392, 11:11 صبح
ممنون دوست من، من روی لوکال تست می کردم همه چی درست بود، اما حالا که اومدم روی سرور، بهم این ارور رو می ده:



[21-May-2013 07:12:29 UTC] PHP Warning: file() [<a href='/phpmanual/function.file.html'>function.file.html</a>]: http:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/re53/public_html/index.php on line 28

از مدیر سرور سوال کردم ، گفتند که مربوط به این allow_url_fopen هست و بدلایل امنیتی نمی تونیم اون رو فعال کنیم

amiragha2
سه شنبه 31 اردیبهشت 1392, 11:24 صبح
به من گفتن از curl هم می تونی استفاده کنی، آیا می شه واسه این کد از curl استفاده کرد؟

MMSHFE
سه شنبه 31 اردیبهشت 1392, 11:41 صبح
بله میشه. البته اگه فایل روی هاست شما نیست، برای نوشتن نه ولی برای خوندن میتونید. مثال:


<?php
$url = 'http://www.domain.com/somefile.txt';
$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($c);
curl_close($c);
$lines = explode(PHP_EOL, $result);
?>

ضمناً اگه فایل روی هاست شماست، همون تابع file هم کار میکنه فقط توی مسیر فایل نباید //:http باشه و باید مسیر نسبی یا مطلق رو بدین و بصورت URL مسیر رو مشخص نکنید.

amiragha2
سه شنبه 31 اردیبهشت 1392, 13:38 عصر
بسیار ممنون از شما ، من برنامه نویس تازه کار هستم و مزاحم شما می شم.
در مورد نمایش مشکلم با این کد ها حل شد.
اما واسه این کد چیکار باید بکنم؟


file_put_contents('set.txt',implode(PHP_EOL,$lines ));

MMSHFE
سه شنبه 31 اردیبهشت 1392, 15:02 عصر
مسیر رو مطلق بدین. برای مثال:

file_put_contents(str_replace('\\', '/', dirname(__FILE__)) . '/set.txt',implode(PHP_EOL, $lines));