Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: помогите разобраться
Форумы портала PHP.SU » PHP » Регулярные выражения » помогите разобраться

Страниц (1): [1]
 

1. androidfx - 06 Ноября, 2007 - 13:25:29 - перейти к сообщению
скрипт должен создавать файл file_1.txt, если его не существует . Если существует file_2.txt ну и так далее. У меня получилось, что он создает file_1.txt потом file_.txt и на этом все заканчивается. Я в ПХП не больше 2ух дней, помогите разобраться. Вот скрипт:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.         $filename = ("item_1.txt");
  4.         $file = file_exists ($filename);
  5.         ereg ("(item)_([0-9]{3}).(txt)", $filename, $regs);
  6.         $n = ($regs[2]);
  7.         $i = ($n++);
  8.  
  9.                 if($file)
  10.                         {
  11.                                 do
  12.                                         {
  13.                                                 $newfile = fopen("item_$i.txt","w");
  14.                                                 fwrite ($newfile, 10);
  15.                                                 $nfile = file_exists ("$newfile");
  16.                                                 fclose ($newfile);
  17.                                         }
  18.                                 while ($nfile);
  19.                         }
  20.                 else
  21.                         {
  22.                                 $firstfile = fopen("$filename","w");
  23.                                 fwrite ($firstfile, 10);
  24.                                 fclose ($firstfile);
  25.                                 echo ("создан фаил $filename");
  26.                         }
  27. ?>
  28.  
2. evgenijj - 06 Ноября, 2007 - 14:05:51 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $i = 1;
  4. while( file_exists( 'file_'.$i.'.txt' ) ) $i = $i + 1;
  5. // Создаем файл с номером $i
  6. file_put_contents('file_'.$i.'.txt', 'some text');
  7. ?>
  8.  
3. androidfx - 06 Ноября, 2007 - 14:49:50 - перейти к сообщению
идеально, спасибо! только вопрос зачем точки до и после .$i. и как такое может быть: $i = $i + 1 если допустим $i=1, то 1=2 этого ведь не может быть?! Где можно прочитать про это, если не трудно дайте ссылку...
4. evgenijj - 06 Ноября, 2007 - 15:31:23 - перейти к сообщению
androidfx пишет:
...только вопрос зачем точки до и после .$i. и как такое может быть: $i = $i + 1 если допустим $i=1, то 1=2 этого ведь не может быть?! Где можно прочитать про это, если не трудно дайте ссылку...

Почему точки до и после
http://php.su/learnphp/operators/?string

Как объяснить, что такое оператор присваивания -- я не знаю. Попробуй выполнить
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $i = 1;
  4. echo $i.'<br/>';
  5. $i = $i + 1;
  6. echo $i.'<br/>';
  7. $y = 5;
  8. $i = $i + $y;
  9. echo $i.'<br/>';
  10. ?>
  11.  

http://php.su/learnphp/operators/?assign

P.S. Вообще, такие вопросы "и как такое может быть: $i = $i + 1 если допустим $i=1, то 1=2 этого ведь не может быть?!" опасны
Цитата:

У многоножки одна сотня ног. Кролик увидел её и не мог поверить. Он сказал:

— Тётушка, я очень смущён, я не могу себе представить, как ты управляешься. Если бы у меня было сто ног, я никогда не смог бы ходить. Я бы совершенно запутался.

Многоножка никогда не задумывалась над этим, вот почему она не путалась. Но теперь она сказала:

— Я никогда не думала об этом, я подумаю.

Она стала размышлять, впервые осознала себя. Она посмотрела на ноги и запуталась. Она упала! Она заявила кролику:

— Никогда не задавай таких вопросов! Я всегда ходила и никогда не было никаких проблем. А ты запутал меня. Теперь я никогда не смогу ходить правильно. Эта проблема будет преследовать меня. Какая первая? Какая вторая? И целая сотня ног!
5. androidfx - 06 Ноября, 2007 - 16:25:37 - перейти к сообщению
-) с точками все ясно, еще один вопрос по поводу переменных


хотелось бы что бы перед file_ была переменная, я уже по всякому пробовал вставить туда, но выходит не то, что нужно. Как мне вставить переменную $country = $_POST['country'] перед file_

PHP:
скопировать код в буфер обмена
  1.  
  2.         <?PHP
  3.                 $content = $_POST['content'];
  4.                 $country = $_POST['country'];
  5.                 $i = 1;
  6.                 while( file_exists('file_'.$i.'.txt') ) $i = $i + 1;
  7.                 $file = fopen ('file_'.$i.'.txt', 'w');
  8.                 fwrite ($file, $content);
  9.                 fclose ($file);
  10.         ?>
  11.  


c контентом все нормально получилось, а c $country никак Хм
p.s. почему code не работает?
6. evgenijj - 06 Ноября, 2007 - 16:38:00 - перейти к сообщению
androidfx пишет:

хотелось бы что бы перед file_ была переменная

Не понял. Чтобы имя файла было germany_file_5.txt?

androidfx пишет:

почему code не работает?


Работают теги [рhр]... [/рhр]
7. androidfx - 06 Ноября, 2007 - 16:40:17 - перейти к сообщению
у меня $country это директория, в итоге должно получаться germany/file_1.txt
8. evgenijj - 06 Ноября, 2007 - 16:44:44 - перейти к сообщению
А говоришь разобрался с точками...
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $country = $_POST['country'];
  4. $content = $_POST['content'];
  5. $i = 1;
  6. while( file_exists( $country.'/file_'.$i.'.txt' ) ) $i = $i + 1;
  7. file_put_contents( $country.'/file_'.$i.'.txt', $content );
  8. ?>
  9.  
9. androidfx - 06 Ноября, 2007 - 16:51:32 - перейти к сообщению
Огромное спасибо, все работает как часы!

P.S. теперь с точками 100% все понятно!

 

Powered by ExBB FM 1.0 RC1