Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   exlpode() (https://forum.antichat.xyz/showthread.php?t=39769)

Linuxoid 08.05.2007 03:41

exlpode()
 
Товарищи! Извините конечно если туплю, но есть пара вопросов про explode().

1. как чделать чтобы за сепаратор брался перенос строки (надо чтобы отображалось кол-во строк в файле).

2. Можно ли както вбить данные из 2х файлов в 1 массив? Ну тоесть имеем 2 определенных сайта. Там есть база юзеров в формате (одинаковом) "юзер|аська". Кидаем эти файлы в одну дерикторию. Как брать инфу из них 2х и все в один массив (при помощи foreach)?


Если сильно туплю - по голове не бить :)

Isis 08.05.2007 08:12

Цитата:

Сообщение от Linuxoid
1. как чделать чтобы за сепаратор брался перенос строки (надо чтобы отображалось кол-во строк в файле).

PHP код:

$exp explode("\r\n"$file); // For win32
$exp explode("\n"$file); // For Unix 

А для того чтобы посчитать кол-во строк в файле
PHP код:

echo count(file('file.txt')); 

Цитата:

Сообщение от Linuxoid
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 код:

<?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? :)

Думаю ты понял что я имею в виду... ;)

SMiX 08.05.2007 10:05

Ну и как всегда, если файл большой, то надо делать так:
PHP код:

$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

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); 


Developer 08.05.2007 20:07

Атцы ПХП :)))

Вот намалевал:

PHP код:

<?php

function getList($list, &$array)
{
    
$url parse_url($list);
    if (
$fp fsockopen($url['host'], 80$errno$errstr30)) {
        
$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($fp1024);
        }
        
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
PHP код:

$exp explode("\r\n"$file); // universal 

)

А для количества строк:
PHP код:

$file=file('yourfile.txt');
$strnum=sizeof($file); 

и никаких циклов)

SMiX 12.05.2007 20:04

Цитата:

Сообщение от Linuxoid
Простите за отклонение от темы, но насколько большой? 10, 100, 1000 строк? ПРосто мне бы както чтоб все побыстрее обрабатывалось надо... :)

В любом случае мой вариант будет быстрее. ПРи 10 строках разница будет незаметна, а при 1 гиге очень даже заметна. да и вообще через ваши file() и коунты с эксплоудами скрипт вылетит с ошибкой , связанной с большим количеством потребляемой памяти.


Время: 15:57