За последние 24 часа нас посетили 17813 программистов и 1719 роботов. Сейчас ищут 900 программистов ...

Удаление пробелов в значениях массива

Тема в разделе "PHP для новичков", создана пользователем Razer, 17 мар 2010.

  1. Razer

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

    С нами с:
    17 мар 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    TLT
    Драсте всем! Возникла небольшая проблема, решения которой не могу нигде найти. Прошу профи помочь ее решить или обойти. Заранее спасибо.

    Задача:

    Необходимо хранить массив (значения массива) в отдельном файле (база данных не используется), т.к. один и тотже массив используется в нескольких скриптах.

    Проблема:

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

    Вопрос:

    Какой функцией (или скриптом) убрать лишние пробелы в каждом значении массива, импортируемого функцией file()?


    Приведу для понятности кусок кода:

    PHP:
    1.  
    2. $p = $_GET['p']; //получение переменной из строки браузера
    3.  
    4. $list = "list.txt";
    5. $news = file($list); //создание массива путем импортирования из файла
    6.                      //получается:
    7.                      //$news = array('newslist ', '20091023 ', '20090527 '); - с пробелами
    8.                      //а нужно, чтобы получилось:
    9.                      //$news = array('newslist', '20091023', '20090527'); - без пробелов
    10.  
    11. if (!in_array($p,$news)) $p = $news[0]; //защита от инклудинга (вот здесь и возникают проблемы)
    12.  
    Содержимое файла list.txt

    Код (Text):
    1.  
    2. newslist
    3. 20091023
    4. 20090527
     
  2. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    PHP:
    1. <?
    2. array_map('trim', $news);
    Читай тут: http://php.net/array_map

    P.S. Кстати, думаю лучше использовать rtrim() - обрезка по правому краю. Ведь добавляется к правому краю.
     
  3. nimistar

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

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    уверен что там пробелы ?
    может переводы строк ?
     
  4. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Классно тема оформлена, все бы так.
     
  5. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  6. nimistar

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

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    Simpliest -а я старался более тонко намекнуть :)
     
  7. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    nimistar, это было дальнейшее развитие твоего намека :p
     
  8. Razer

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

    С нами с:
    17 мар 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    TLT
    всем спасибо! работает как подсказал lexa. про rtrim, кстати, верно подмечено :)
     
  9. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Razer
    Только если почитать по-совету nimistar мануал, то обнаружится, что обычно никакой rtrim не нужен.
     
  10. Razer

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

    С нами с:
    17 мар 2010
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    TLT
    решение от Simpliest не прокатило, тк у мну php4, а так видимо тоже должно работать ,)