PDA

View Full Version : استفاده از حلقه for برای باز کردن چندین فایل متنی



Salazar.mi
دوشنبه 09 دی 1398, 14:26 عصر
سلام
مثلا من 3 تا فایل متنی دارم میخواهم محتوای سه تافایل را با هم بخوانه و یه سری کار انجام بده
یعنی برام مهمه همزمان به سه تافایل دسترسی داشته باشه
مثلا اینجا

$myfile1 = fopen("1", "r+") or die("Unable to open file!");
$myfile2 = fopen("2", "r+") or die("Unable to open file!");
$myfile3 = fopen("3", "r+") or die("Unable to open file!");
$string1=(fread($myfile,filesize("1")));
$string2=(fread($myfile,filesize("2")));
$string3=(fread($myfile,filesize("3")));




اینو با یه for نوشتم که جواب نداد


for($i=1;$i<4;$i++)
{
$myfile.$i.=fopen(.$i.,"r+") or die("Unable to open file!");
$string.$i=(fread($myfile.$i,filesize(.$i.)));
}

دو تا سوال دارم اینکه این for را چجوری بنویسم
و اینکه دستور fclose را اصلا باید چجوری بنویسم؟؟؟؟؟؟؟؟؟؟؟؟؟
بعد از همه دستور هایی که نوشتم بیایم دوباره یه for بزارم و دونه دونه فایل ها راببندم؟
فایل ها پسوند نداره ولی یکیشو باز کردم تونست باز کنه

Salazar.mi
دوشنبه 09 دی 1398, 15:08 عصر
درست شد


for($i=1;$i<4;$i++)
{
${"myfile".$i}=fopen($i,"r+") or die("Unable to open file!");
${"string".$i}=(fread(${"myfile".$i},filesize($i)));
echo ${"string".$i};



$patterns=array("/(\?|\=|\@|\!|\#|\$|\%|\^|\&|\*|\(|\)|\+|\_|\-|\'|\"|\:|\;|\.|\,|\[|\]|\{|\}|\<|\>)/");


//$patterns=array('/[0-9]+/');


$replacements=array_fill(0,27," ");
for($j=0;$j<28;$j++)
{
if(isset($patterns[$j]))
{
${"r".$i}=preg_replace($patterns,$replacements,${"string".$i});
var_dump(${"r".$i});


}
}


}

Salazar.mi
دوشنبه 09 دی 1398, 15:09 عصر
همین که fclose هم نمیدونم کجا بنویسم؟؟؟؟؟؟؟؟؟؟؟
fclose دقیقا به چه دردی میخوره؟

ASHKANLAEI
دوشنبه 09 دی 1398, 15:17 عصر
درست شد


for($i=1;$i<4;$i++)
{
${"myfile".$i}=fopen($i,"r+") or die("Unable to open file!");
${"string".$i}=(fread(${"myfile".$i},filesize($i)));
echo ${"string".$i};



$patterns=array("/(\?|\=|\@|\!|\#|\$|\%|\^|\&|\*|\(|\)|\+|\_|\-|\'|\"|\:|\;|\.|\,|\[|\]|\{|\}|\<|\>)/");


//$patterns=array('/[0-9]+/');


$replacements=array_fill(0,27," ");
for($j=0;$j<28;$j++)
{
if(isset($patterns[$j]))
{
${"r".$i}=preg_replace($patterns,$replacements,${"string".$i});
var_dump(${"r".$i});


}
}


}

شما چند تا اشتباه در کد دارین.
مثلاً patterns$ یک خانه دارد چرا باید آرایه باشد و چرا در شرط گفتید [patterns[$i ؟
و برای کم تر شلوغ بودن کد بهتره برای string و file از آرایه استفاده کنید.
یعنی شما اون هایی رو که نباید آرایه باشن آرایه گرفتین و اونایی که بهتره آرایه باشن رو جور دیگری ساختین.

ASHKANLAEI
دوشنبه 09 دی 1398, 15:18 عصر
همین که fclose هم نمیدونم کجا بنویسم؟؟؟؟؟؟؟؟؟؟؟
fclose دقیقا به چه دردی میخوره؟
همون طور که گفتین میتونین در آخر کار یک حلقه دیگه باز کنین و fclose رو بنویسید.

ASHKANLAEI
دوشنبه 09 دی 1398, 15:24 عصر
همین که fclose هم نمیدونم کجا بنویسم؟؟؟؟؟؟؟؟؟؟؟
fclose دقیقا به چه دردی میخوره؟
https://stackoverflow.com/a/6038783/11955706
این پاسخ در StackOverflow به خوبی جواب داده که: شما میتونین از fclose استفاده نکنید اما با این کار فایل شما به مدت زیادی باز میمونه و این حالت مناسبی نیست. پس شما هم برای تمیز بودن کد، هم برای این که بدونید تا چه جایی با فایل کار دارین، هم ... از fclose استفاده میکنید.

Salazar.mi
دوشنبه 09 دی 1398, 17:09 عصر
بی نهایت ممنونم
خدا خیرتون بده
کلی ناراحت بودم یه for دیگه نوشتم
چون تعداد فایل هام خیلیه
حقیقتا تونستم preg_replace را از حالت آرایه ای در بیارم
ولی واسه file وstring که گفتین یه ذره خودم گیجم گفتم اول کدمو بنویسم همین جوری اجرا بشه بعد اگر تونستم تبدیلش کنم به آرایه
ولی واقعا ممنونممم
تشکرات ویژه
انشااله هر چی دوست دارین خدا بهتون بده
این for دومی حذف شد انگار دنیا را بهم دادن
ممنونم