Получить строку из file_get_content , помогите

Тема в разделе "PHP", создана пользователем grendmaster, 10 сен 2011.

Модераторы: latteo
  1. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Привет всем,помогите плиз получить всю строку целиком
    PHP:
    for ($i=0$i<60$i++) 

        
    $text file_get_contents('C:/wtexty/'.$i.'.txt');
    $title $text[0];
    $title выводит только первую букву,а нужна вся строка
    если меняю file_get_contents на file(), строка получается целиком,но перестает работать весь скрипт,чтение манов не помогло ;)
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    file_get_contents - получает содержимое файла в виде строки. При обращении $file[0] - ты обращаешься к первой букве (если рассматривать строку как массив из букв). варианты решения:

    PHP:
    $text_arr file('C:/wtexty/'.$i.'.txt'); 
    $title trim($text_arr[0]); 
    $text implode(''$text_arr); 
    unset(
    $text_arr);
    PHP:
         $text file_get_contents('C:/wtexty/'.$i.'.txt'); 
    preg_match("~^.*?\n~"$text $title_preg);
    $title =trim$title_preg[0] ); 
     
    grendmaster нравится это.
  3. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Нет,не работает так,вообще пустые переменные получаются
    я думаю здесь все дело в том что две переменные обращаются к одному файлу с разными требованиями так сказать,одной нужен файл целиком - поскольку счетчик,а другой нужен этот же файл построчно,может эту незадачу можно как то по другому порешать ?
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    991
    Симпатии:
    267
    Вот так.
    PHP:
    $text file_get_contents('C:/wtexty/'.$i.'.txt'); 
    preg_match("/^.*\n/Uis"$text $title_preg);
    $title =trim$title_preg[0] ); 
     
    grendmaster нравится это.
  5. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Нет и так не пашет, вернее $title работает и строку выводит, а $text пусто
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Если $title работает нормально , то и $text должно быть хоть что-то, тк именно оттуда берётся значение. В этом коде ошибок нет, но у тебя скорее всего переменная $text где то затирается в другом месте.
     
  7. grendmaster

    grendmaster Постоялец

    Регистр.:
    21 апр 2010
    Сообщения:
    76
    Симпатии:
    2
    Все,спасибо большое KillDead и dandandan,заработало наконец то,сорри тут маленько сам ступил поэтому сразу и не работало,
    когда из PHP уберут все запятые,точки скобки и кавычки начну изучать основательно,:))

    dandandan а что ето за хитрое такое Uis?
     
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Перейти по ссылке
    i- не обращаем внимание на регистр
    s- работа с мультистроками
    U- шаблон захватин не максимум возможного а минимум.
    хотя, по идее они все ненужны в данной задаче
     
  9. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    419
    Симпатии:
    285
    Не проще
    PHP:
    for ($i=0$i<60$i++) {
      
    $text file_get_contents('C:/wtexty/'.$i.'.txt'); 
      
    $text_explode explode(PHP_EOL$text);
      
    $title $text_explode[0];
    ?
     
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Я об этом подумал, но в варианте list($title,) = explode() но посчитал что разбивать текст в массив - намного хуже по ресурсам- хотя это экономия на спичках.
    + PHP_EOL в принципе как и с \n нужно быть осторожнее (если посчитать это аксиомой как перенос строки)- если вдруг файлик создадите под виндой в блокноте и перекините на серв, то при разбиении только по \n (сам символ уйдёт) но \r останется. Неприятный и неочевидный баг, который может всплыть неожиданно.