Автор Тема: пустые строки в массиве  (Прочитано 4287 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sergo_stavropol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://plyazhi.ru
пустые строки в массиве
« : 04 Января 2003, 13:42:00 »
как бороться с пустыми строками  в массиве (когда копируешь текст в форму, после последнего символа остается куча пробелов, и  в файл, читаемый как массив ф-ией file() пишется  нужная строка + еще несколько пустых строк)

я пользовался поиком  по форуму, к своему удивлению искомая комбинация слов не нашлась.

Подскажите пожалуйста, не гневайтесь на ленивого.
Я понимаю, что решение где-то на поверхности, но тем не менее хотя бы натолкните на мысль

Оффлайн sergo_stavropol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://plyazhi.ru
пустые строки в массиве
« Ответ #1 : 04 Января 2003, 13:49:16 »
у меня возникали следующие мысли:

1)пробежаться с помощью ф-ий next(), current() по массиву в поисках value="" и удалить этии строки, но ведь это будет тормозить работу скрипта (каждый раз пробегать весь массив!);

2)заменить с помощью str_replace() символ пробела, которые попадают в поле textarea на ""

где  я ближе к истине?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
пустые строки в массиве
« Ответ #2 : 04 Января 2003, 14:34:58 »
нигде.
файл надо читать не функцией file, а функцией fread
и удалять пустые строки функцией trim
и причем не при чтении из файла, а сразу по приходе из формы.

Оффлайн Bang

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 120
  • +0/-0
  • 0
    • Просмотр профиля
    • http://anna.comcor.ru
пустые строки в массиве
« Ответ #3 : 04 Января 2003, 14:40:25 »
rtrim() вроде как отсекает пробелы справа, нет?
или тебе что-то другое нужно?

Цитировать
заменить с помощью str_replace() символ пробела, которые попадают в поле textarea на ""


тогда уж двойные пробелы заменять на одинарные до тех пор, пока не останется двойных пробелов.
best wishes!
bang

Оффлайн sergo_stavropol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://plyazhi.ru
пустые строки в массиве
« Ответ #4 : 04 Января 2003, 14:50:38 »
RomikChef
"непосредственно на выходе из формы" - не совсем понятно, где это

Оффлайн Bang

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 120
  • +0/-0
  • 0
    • Просмотр профиля
    • http://anna.comcor.ru
пустые строки в массиве
« Ответ #5 : 04 Января 2003, 14:53:06 »
Цитировать
"непосредственно на выходе из формы" - не совсем понятно, где это

я думаю, RomikChef имел в виду - там, где ты обрабатываешь первый раз эти данные, полученные из формы. Ты же ведь их как-то хранишь? Вот перед тем, как положить на хранение и обрабатываешь как тебе надо.
best wishes!
bang

Оффлайн sergo_stavropol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://plyazhi.ru
пустые строки в массиве
« Ответ #6 : 04 Января 2003, 16:20:42 »
сработала все-таки replace

$textarea  = ereg_replace("\\r\\n","
",$body);

кстати,  я слышал, что ereg_replace гораздо медленее str_replace() и для обычных строковых символов лучше использовать последнюю
так ли это?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
пустые строки в массиве
« Ответ #7 : 04 Января 2003, 16:37:32 »
так.

для замены перевода строк на
 в PHP есть специальная функция nl2br, которая, в отличие от твоей, будет работать быстро и везде.

У меня встречный вопрос:
Какое приведенный код имеет отношение к вопросу, который был первоначально задан?
Где тут массив и пустые строки?

Оффлайн sergo_stavropol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://plyazhi.ru
пустые строки в массиве
« Ответ #8 : 04 Января 2003, 16:49:07 »
RomikChef

Без проблем,  объясню:
поначалу я недопетривал до того, что можно \\r\\n переводы строки, возникшие при копировании заменять либо на
, либо на какой - нибудь другой символ, лишь бы не \\r\\n непсредственно в переменной, названной именем одного из полей формы.

Я думал что убить пустые строки, которые file() приняла за элементы массива,   можно только с помощью функций работы с массивами.

Ну не стал же бы я называть тему "Помогите, люди добрые,  любвм путем строки убить!"  
Старался сформулировать  вопрос наиболее конкретно, сначала  задал  вопрос по массиву, потом после твоей подсказки сделал свое дело  "непосредственно на выходе из формы",  только не с fread(), а с replace() и привел этот код

Если что не так , сорри. Я стараюсь быть законопослушным участником. Но при этом все ранвно ленивым :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
пустые строки в массиве
« Ответ #9 : 04 Января 2003, 17:27:11 »
понятно.
то есть, тебе надо, чтобы переменная не содержала переводов строк.
Наконец-то мы добрались до истины.

Не знаю. Я тоже ленивый, но вот думать и формулировать я пока еще не ленюсь.

Так вот, в этом случае nl2br тебе не подойдет, поскольку она не заменяет, а добавляет.
и решением будет именно
$textarea = str_replace("\\r","",str_replace("\\n","
",trim($body)));

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28