Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перемешать строки в файле в случайном порядке
 
 автор: neewbie   (03.06.2007 в 03:43)   письмо автору
 
 

Привет всем!
Очень нужно сделать рандомизатор строк в файле, например, есть файл auto.txt

Его содержимое:
Mitsubisi 2001 probeg-20000
Toyota 1999 probeg-50000
VAZ 2006 probeg-3000

Нужно сделать так, чтобы скрипт открывал файл auto.txt, менял местами эти строки и сохранял.. Я в пхп к сожалению не селен, как можно реализовать, не подскажете? )

Вот что-то получилось, но как будет выглядеть механизм рандомизатора?

if(!empty($_POST))
{
$fd = fopen("auto.txt", "w");
fwrite($fd, $_POST['name']);
fclose($fd);
}
$auto = file_get_contents("auto.txt");

   
 
 автор: sms-send   (03.06.2007 в 03:56)   письмо автору
 
   для: neewbie   (03.06.2007 в 03:43)
 

<?php

define
('NL',chr(13).chr(10));
$f=fopen($file='auto.txt','w');
$arr=explode(NL,file_get_contents($file));
shuffle($arr);
fputs($f,implode(NL,$arr));
fclose($f);

?>

   
 
 автор: kasmanaft   (03.06.2007 в 10:15)   письмо автору
 
   для: sms-send   (03.06.2007 в 03:56)
 

Так Вы затрете файл...
а вместо explode(NL,file_get_contents($file)) можно было бы использовать file($file) (тогда NL вообще не пригодится)..
по-моему, удобнее.

   
 
 автор: bronenos   (03.06.2007 в 10:33)   письмо автору
 
   для: kasmanaft   (03.06.2007 в 10:15)
 

но если в исходном файле после последней строки не идет NL, то в итоге могут получиться две строчки склеенные в одну

   
 
 автор: neewbie   (03.06.2007 в 16:50)   письмо автору
 
   для: bronenos   (03.06.2007 в 10:33)
 

2sms-send Спасибо огромное, но что-то он и вправду затирает файл auto.txt... ( Можно как-нибудь переделать его чтобы не затирал?)

   
 
 автор: ddhvvn   (03.06.2007 в 16:56)   письмо автору
 
   для: neewbie   (03.06.2007 в 16:50)
 

Попробуйте так:

<?php 

$arr 
file("auto.txt");
shuffle($arr); 
$source implode(NL$arr);
file_put_contents("auto.txt"$source);

?> 

   
 
 автор: neewbie   (03.06.2007 в 17:02)   письмо автору
 
   для: ddhvvn   (03.06.2007 в 16:56)
 


VAZ 2006 probeg-3000NLToyota 1999 probeg-50000
NLMitsubisi 2001 probeg-20000


Работает, но чего-то NL вставляет в файл % )

   
 
 автор: kasmanaft   (03.06.2007 в 17:55)   письмо автору
 
   для: neewbie   (03.06.2007 в 17:02)
 

Хех :)

<?php 
define
('NL',chr(13).chr(10)); 
$file='auto.txt';
$arr=explode(NL,file_get_contents($file)); 
$f=fopen($file,'w');
shuffle($arr); 
fputs($f,implode(NL,$arr)); 
fclose($f); 
?>

А в примере ddhvvn, этот NL замените на "" (пустая строка). Однако в этом случае нужно, чтобы в последней строке стоял перевод строки. (а в примере sms-send наоборот не стоял).

   
 
 автор: neewbie   (03.06.2007 в 18:10)   письмо автору
 
   для: kasmanaft   (03.06.2007 в 17:55)
 

Спасибо всем, все воркает )

з.ы kasmanaft респект ;)

   
 
 автор: ddhvvn   (03.06.2007 в 18:12)   письмо автору
 
   для: kasmanaft   (03.06.2007 в 17:55)
 

ссори, ошибся - сделайте как сказал kasmanaft.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования