Просмотр полной версии : exlpode()
Linuxoid
08.05.2007, 03:41
Товарищи! Извините конечно если туплю, но есть пара вопросов про explode().
1. как чделать чтобы за сепаратор брался перенос строки (надо чтобы отображалось кол-во строк в файле).
2. Можно ли както вбить данные из 2х файлов в 1 массив? Ну тоесть имеем 2 определенных сайта. Там есть база юзеров в формате (одинаковом) "юзер|аська". Кидаем эти файлы в одну дерикторию. Как брать инфу из них 2х и все в один массив (при помощи foreach)?
Если сильно туплю - по голове не бить :)
1. как чделать чтобы за сепаратор брался перенос строки (надо чтобы отображалось кол-во строк в файле).
$exp = explode("\r\n", $file); // For win32
$exp = explode("\n", $file); // For Unix
А для того чтобы посчитать кол-во строк в файле
echo count(file('file.txt'));
2. Можно ли както вбить данные из 2х файлов в 1 массив? Ну тоесть имеем 2 определенных сайта. Там есть база юзеров в формате (одинаковом) "юзер|аська". Кидаем эти файлы в одну дерикторию. Как брать инфу из них 2х и все в один массив (при помощи foreach)?
Чуть не понял =)
Linuxoid
08.05.2007, 09:41
С подсчетом строк сам разобрался, но всеравно спасибо. :)
Чуть не понял =)
Имеем 3 файла:
users.txt
DialSoft|2525302
Pupkin|11111111
Medved|5282456
users2.txt
Lamer|11466223
MegoLamer|16723465
Hacker|24377457
out.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? :)
Думаю ты понял что я имею в виду... ;)
Ну и как всегда, если файл большой, то надо делать так:
$f = fopen('file.txt','r');
$count=0;
while(!feof($f))
{
fgets($f);
$count++;
}
fclose($f);
//В переменной $count будет кол-вот строк. Php сам определит, какой разделитель нужно использовать(\r\n \n и т.п.)
Linuxoid
08.05.2007, 10:28
Ну и как всегда, если файл большой, то надо делать так
Простите за отклонение от темы, но насколько большой? 10, 100, 1000 строк? ПРосто мне бы както чтоб все побыстрее обрабатывалось надо... :)
GreenBear
08.05.2007, 10:39
$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);
Developer
08.05.2007, 20:07
Атцы ПХП :)))
Вот намалевал:
<?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>';
?>
hackconnect
08.05.2007, 21:22
$exp = explode("\r\n", $file); // For win32
$exp = explode("\n", $file); // For Unix
$exp = explode("\r\n", $file); // universal
)
А для количества строк:
$file=file('yourfile.txt');
$strnum=sizeof($file);
и никаких циклов)
Простите за отклонение от темы, но насколько большой? 10, 100, 1000 строк? ПРосто мне бы както чтоб все побыстрее обрабатывалось надо... :)
В любом случае мой вариант будет быстрее. ПРи 10 строках разница будет незаметна, а при 1 гиге очень даже заметна. да и вообще через ваши file() и коунты с эксплоудами скрипт вылетит с ошибкой , связанной с большим количеством потребляемой памяти.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot