Рандомизация и обрезка количества строк.

Тема в разделе "PHP", создана пользователем Levitt, 1 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Levitt

    Levitt

    Регистр.:
    20 май 2008
    Сообщения:
    357
    Симпатии:
    36
    Ребята, есть елементарный скрипт парсинга строк (линков) из файла. Идет присвоение переменной содержание файла1 и запись его в файл2. Можно ли в скрипте прикрутить рандомизацию строк и обрезку их по числу, например чтобы в файл2 сохранялось до 100 рандомизированых строк. Спасибо.
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    парсить линки в массив, после чего воспользоватся функцией array_rand
     
  3. Levitt

    Levitt

    Регистр.:
    20 май 2008
    Сообщения:
    357
    Симпатии:
    36
    по сути отпарсеные уже автоматом и есть одномерный масив, правильно?
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    совершенно верно
     
  5. Levitt

    Levitt

    Регистр.:
    20 май 2008
    Сообщения:
    357
    Симпатии:
    36
    гляньте что не так:
    PHP:
    <?php

    $site_pars 
    'http://site.com/links.txt';
    $file 'links.txt';

    $text = array(file_get_contents$site_pars ));

    $rand_keys array_rand($text50);
        
    $file file($file);
        
    $fp=fopen($file"w"); 
            
    fwrite($fp,$rand_keys);
        
    fclose($fp);
    ?>
     
  6. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    попробуйте использовать вместо file_get_contents функцию file, которая возвращает массив строк
    PHP:
    $text file$site_pars ); 
    так как в вашем случае получается массиво из одного элемента, содержащего весь контент из файла _http://site.com/links.txt
     
  7. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    PHP:
    rand_keys array_rand($text50);
    возвращает не значения массива, а его ключи.
    аля

    PHP:
    <?php 

    $site_pars 
    'http://site.com/links.txt'
    $file 'links.txt'

    $text file($site_pars); 
    $rand_keys array_rand($text50); 
     
    $fp=fopen($file"w");  
    foreach (
    $rand_keys as $key) {
            
    fwrite($fp$text[$key]); 
    }
    fclose($fp); 
    ?>
    это как пример.
    Учти, чтобы функция file могла читать ссылки, у тебя должна быть включена директива Allow_url_fopen
     
  8. Levitt

    Levitt

    Регистр.:
    20 май 2008
    Сообщения:
    357
    Симпатии:
    36
    всеровно не работает с выше упомянотыми способами =(
    Вся трабла с оглашением контента масивом. Плюс, сейчас появилась ещё елементараня задача прилепить к каждой строке обрамку <li></li>
     
  9. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    PHP:
    ini_set('display_errors'1);
    ini_set('display_startup_errors'1);
    error_reporting(E_ALL); 

    Пропиши в начале скрипта, и вообще, понятие "не работает" многозначно, пиши конкретней.
     
  10. Eihwaz

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    Функция file считывает содержимое построчно.
    Т.е., если у вас текстовый файл со ссылками является списком:
    Код:
    http://www.url1.com
    http://www.url2.com
    http://www.url3.com
    ...
    http://www.url100.com
    
    То функция file вам в самый раз:
    PHP:
    <?php
    $file 
    'list.txt';
    $files_array file($fileFILE_SKIP_EMPTY_LINES);
    foreach(
    $files_array as $url) {
          echo 
    '<li>' $url '</li>';
    }
    ?>
     
Статус темы:
Закрыта.