За последние 24 часа нас посетили 20043 программиста и 1649 роботов. Сейчас ищут 1859 программистов ...

Вывод строки из файла с определенным ID

Тема в разделе "PHP для новичков", создана пользователем sl2012, 25 сен 2013.

  1. sl2012

    sl2012 Активный пользователь

    С нами с:
    10 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Россия
    Этот код просто выводит указанную строку из файла file.txt
    Код (Text):
    1. $file = file('file.txt');
    2. $id = 1;
    3. echo "$file[$id]";
    А нужно чтобы он выводил не строку, а все что после |
    1|текст
    2|текст

    Знаю, что нужно использовать функцию explode, но как это сделать?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. $file = file('file.txt');
    2. $id = 1;
    3. list($n,$text) = explode('|',$file[$id],2);
    4. echo $text; 
     
  3. sl2012

    sl2012 Активный пользователь

    С нами с:
    10 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Россия
    Большое спасибо, работает.
    Но мне еще нужно, чтобы выводилась не просто строка отсчитанная от начала файла, а именно указанная строка, независимо от ее места нахождения в файле.
    $id = 4;
    1|текст
    3|текст
    2|текст
    5|текст
    4|текст
     
  4. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Правда несовсем по теме.На своем небольшом опыте по изучению php подскажу,что работать с бд проще ,чем с файлами.Я честно говоря даже проскочил тему с файлами и сразу начал изучать бд.Поверьте с бд лучше и проще :)
     
  5. sl2012

    sl2012 Активный пользователь

    С нами с:
    10 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Россия
    Я полностью согласен, просто пока не дорос до бд, морально. Но надо изучать.
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.799
    Симпатии:
    1.331
    Адрес:
    Лень
    Код (PHP):
    1. if (file_exists ("SQL.db") == FALSE) {
    2. $db = new SQLiteDatabase("SQL.db");
    3. $db->query("BEGIN;
    4. CREATE TABLE table(id INTEGER PRIMARY KEY, text);
    5. INSERT INTO table VALUES('1', 'текст1');
    6. INSERT INTO table VALUES('2', 'текст2');
    7. INSERT INTO table VALUES('3', 'текст3');
    8. INSERT INTO table VALUES('4', 'текст4');
    9. COMMIT;
    10. ");
    11. } else {
    12. $db = new SQLiteDatabase("SQL.db");
    13. }
    14. echo $db->singleQuery("SELECT text FROM table WHERE id = '".sqlite_ecsape_string($_GET[id])."'");
    site.ru/?id=1
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    Код (PHP):
    1. $lines = file('./file.txt');
    2.  
    3. $id = 2;
    4. $text = null;
    5. array_walk($lines, function($item, $key) use($id, &$text) { 
    6.     $a = explode('|', $item); 
    7.     if ($a[0] == $id) $text = $a[1];
    8. });
    9.  
    10. echo $text;
    полюбому выведет "текст" )))

    P.S. база лучше
     
  8. sl2012

    sl2012 Активный пользователь

    С нами с:
    10 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Россия
    При помощи БД mysql оказалось все действительно гораздо проще. Даже не ожидал что получится.
    Код (Text):
    1.  
    2. $db = mysql_connect("localhost","логин","пароль"); //Подключаемся к базе данных
    3. mysql_select_db("имя базы данных",$db); // Выбираем базу данных
    4. @mysql_query('set character_set_results="utf8"'); // Устанавливаем кодировку ответа
    5. $id=7; // Указываем из строки с каким Id брать данные, 7 можно заменить на переменную.
    6. $resultat = mysql_query("SELECT * FROM `название таблицы бд` WHERE ID='$id'"); //Указываем из какой таблицы брать данные
    7. $array = mysql_fetch_array($resultat);
    8. echo "ID: ".$array['ID']."<br>Почта: ".$array['user_email']."<br>Имя: ".$array['display_name']."<br><br>";
    Добавлено спустя 6 минут 7 секунд:
    Не работает:
    syntax error, unexpected T_FUNCTION
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
  10. sl2012

    sl2012 Активный пользователь

    С нами с:
    10 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Россия
    5.2.17
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.119
    Симпатии:
    1.245
    Адрес:
    там-сям
    дык! конечно, анонимные функции с 5.3 начались. до этой версии не так красиво колбэками получается. обновляйся уже )))
     
  12. nixx

    nixx Активный пользователь

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Лучше сразу изучать более свежее расширение PDO
    $result = $db->query("SELECT * FROM table WHERE id='$id' ");
    while($myrow = $result->fetch()) {echo $myrow['id'];}
     
  13. sl2012

    sl2012 Активный пользователь

    С нами с:
    10 дек 2012
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    Россия
    Обновил версию PHP все заработало.