1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Как сделать правильно скрипт?

Тема в разделе "Web Coding", создана пользователем асс, 5 дек 2007.

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

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Есть скрипт
    1.txt В этом файле урлы
    по ним будем брать контент

    PHP:
    <?php
    $mass
    =file("1.txt");  //Берем урл и обрабатываем
    foreach($mass as  $value)
    {
    //получили урл
    $domans=$value;
    $lines = (file_get_contents($domans));//Обрабатываем контент  полученый с урла,и очищаем от мусора
    if(preg_match_all("/<a [^>]*>([^>]*\.(co.uk|co.in))</",$lines,$matche)){

    }else
    {
         echo 
    "false";
    }
    foreach (
    $matche[1] as $line)//перебираем в массиве
    затем открываем файл  3.txt и сохраняем все данные из полученых урлов
    {
    $fp=fopen("3.txt"'a+');//открываем для записи файл
    fwrite($fp,$line."\n"); // записываем  данные
    }
     }
    fclose($fp);
      
    ?>
    Как сделать чтоб он грабил с всех урлов.
    У меня он грабит всего один урл первый в списке
    и все. То есть цикла нет
    Может кто знающий подправить?

    Я с циклами не работал никогда толком. по этому не знаю как это реализовать.
     
  2. saggitarius

    saggitarius Прохожие

    Функция file() берёт файл в массив, разделение идёт по символу новой строки, причём каждый элемент массива будет
    содержать этот символ.
    То есть в этом коде
    PHP:
    $mass=file("1.txt"); 
    foreach(
    $mass as  $value)

    ...
    переменная $value содержит урл вместе с символом новой строки, именно поэтому ничего не получается.

    Вот решение проблемы:
    PHP:
    $mass=file("1.txt");  //Берем урл и обрабатываем
    foreach($mass as  $value)
    {
    //получили урл
    $domans=trim($value); 
    ...
     
  3. LeXxiK

    LeXxiK Читатель

    Заблокирован
    Регистр.:
    10 авг 2007
    Сообщения:
    76
    Симпатии:
    9
    Или так :)

    PHP:
    <?php
    $mass
    =file("1.txt");  //Берем урл и обрабатываем
    $UrlListCount=count($mass);
    for (
    $i=0;$i<$UrlListCount;$i++)
    {
    //получили урл
    $domans=trim($mass[$i]);
     
  4. admLoki

    admLoki генератор случайного PHP

    Регистр.:
    14 сен 2006
    Сообщения:
    481
    Симпатии:
    93
    Вот так .
    PHP:
    $mass explode("\x0a",file_get_contents("1.txt"));
    foreach(
    $mass as  $value
    {  
    ...
    Или
    PHP:
    $mass explode("\n",file_get_contents("1.txt"));
    foreach(
    $mass as  $value
    {  
    ...
    Но с \n не всегда выходит .

    Добавлено через 7 минут
    А вообще функция file() в конце каждого массива оставляет спецсимволы обрыва строки .

    Попробуй на это поставить rtrim() либо используй методы выше .
     
  5. roddik

    roddik Колбаска

    Регистр.:
    26 янв 2007
    Сообщения:
    351
    Симпатии:
    289
    наверное это из-за символа возврата каретки может не работать, preg_split('#\r?\n#'... получше будет
     
  6. inkover

    inkover Писатель

    Регистр.:
    10 сен 2007
    Сообщения:
    3
    Симпатии:
    0
    чтобы не париться с переводами строки и пр пустотами мона сделать так:
    PHP:
    $mass=file("1.txt"); 
    foreach(
    $mass as  $value)
    {
     
    $value trim($value);
    ...  
    }
    тогда точно получишь нужный урл.
     
  7. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Экономнее, по ресурсам, будет организовать построковое чтение. Т.н. чтение "в поток". Но это только при условии, что у вас список урлов длиннее 300-500 строк :)


    PHP:
    <?php 
     $fRead 
    fopen('urls_list.txt''r');
     while(!
    feof($fRead))
     {
       
    $url trim(fgets($fRead));
       ......
     }
     
    fclose($fRead);
    ?>
    Но эт так... для идеологии чиста :)
     
  8. Sam123

    Sam123 Создатель

    Регистр.:
    24 янв 2008
    Сообщения:
    17
    Симпатии:
    1
    Почему будет экономнее?
     
  9. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Потому, что маны курить нада перед постановкой такого вопроса, а не траву.
     
    lobzik и FaLL3N нравится это.
  10. 0x00

    0x00 Постоялец

    Регистр.:
    24 ноя 2007
    Сообщения:
    53
    Симпатии:
    10
    ибо ненужно вливать весь файл в память, она не резиновая. а файл может быть объемом и 100 мегабайт или даже больше. это кстати и к автору спамита относится...
     
    Sam123 нравится это.
Статус темы:
Закрыта.