Товарищи! Извините конечно если туплю, но есть пара вопросов про explode(). 1. как чделать чтобы за сепаратор брался перенос строки (надо чтобы отображалось кол-во строк в файле). 2. Можно ли както вбить данные из 2х файлов в 1 массив? Ну тоесть имеем 2 определенных сайта. Там есть база юзеров в формате (одинаковом) "юзер|аська". Кидаем эти файлы в одну дерикторию. Как брать инфу из них 2х и все в один массив (при помощи foreach)? Если сильно туплю - по голове не бить
PHP: $exp = explode("\r\n", $file); // For win32 $exp = explode("\n", $file); // For Unix А для того чтобы посчитать кол-во строк в файле PHP: echo count(file('file.txt')); Чуть не понял =)
С подсчетом строк сам разобрался, но всеравно спасибо. Имеем 3 файла: users.txt Code: DialSoft|2525302 Pupkin|11111111 Medved|5282456 users2.txt Code: Lamer|11466223 MegoLamer|16723465 Hacker|24377457 out.php PHP: <?php $data = file("users.txt"); $data = array_reverse($data); foreach ($data as $v) { $v = explode("|", $v); echo"User: $v[0] <br> ICQ: $v[1]"; ?> 1 и 2 файлы - базы юзеров. Формат: user|icq. 3 файл - выводит их из файла users.txt. Так вот как сделать так, чтобы файл out.php выводил ВСЕХ юзеров из users.txt и users2.txt? Думаю ты понял что я имею в виду...
Ну и как всегда, если файл большой, то надо делать так: PHP: $f = fopen('file.txt','r'); $count=0; while(!feof($f)) { fgets($f); $count++; } fclose($f); //В переменной $count будет кол-вот строк. Php сам определит, какой разделитель нужно использовать(\r\n \n и т.п.)
Простите за отклонение от темы, но насколько большой? 10, 100, 1000 строк? ПРосто мне бы както чтоб все побыстрее обрабатывалось надо...
PHP: $array = array(); $files = array('us1', 'us2'); foreach($filea as $f){ $fp = fopen($f, 'r'); while(!feof($fp)) $array[] = rtrim(fgets($fp)); fclose($fp); } print_r($array);
Атцы ПХП )) Вот намалевал: PHP: <?php function getList($list, &$array) { $url = parse_url($list); if ($fp = fsockopen($url['host'], 80, $errno, $errstr, 30)) { $headers = 'GET ' . $url['path'] . ' HTTP/1.0' . PHP_EOL; $headers .= 'Host: ' . $url['host'] . PHP_EOL; $headers .= 'Connection: Close' . PHP_EOL . PHP_EOL; fwrite($fp, $headers); while (!feof($fp)) { $array[] = fgets($fp, 1024); } fclose($fp); return true; } else { return false; } } $icq[0] = array(); $icq[1] = array(); echo '<pre>' . PHP_EOL; if (!getList('http://site1.com/base.txt', $icq[0])) { echo 'Ошибка при загрузке первого списка' . PHP_EOL; } else { echo 'Первая база содержит ' . count($icq[0]) . ' адресов' . PHP_EOL; } if (!getList('http://site2.com/base.txt', $icq[1])) { echo 'Ошибка при загрузке второго списка' . PHP_EOL; } else { echo 'Вторая база содержит ' . count($icq[1]) . ' адресов' . PHP_EOL; } $base = array_merge($icq[0], $icq[1]); echo 'Общая база содержит ' . count($base) . 'адресов' . PHP_EOL; echo '</pre>'; ?>
PHP: $exp = explode("\r\n", $file); // universal ) А для количества строк: PHP: $file=file('yourfile.txt'); $strnum=sizeof($file); и никаких циклов)
В любом случае мой вариант будет быстрее. ПРи 10 строках разница будет незаметна, а при 1 гиге очень даже заметна. да и вообще через ваши file() и коунты с эксплоудами скрипт вылетит с ошибкой , связанной с большим количеством потребляемой памяти.