Forum Webscript.Ru

Программирование => PHP => Тема начата: sergo_stavropol от 04 Января 2003, 13:42:00

Название: пустые строки в массиве
Отправлено: sergo_stavropol от 04 Января 2003, 13:42:00
как бороться с пустыми строками  в массиве (когда копируешь текст в форму, после последнего символа остается куча пробелов, и  в файл, читаемый как массив ф-ией file() пишется  нужная строка + еще несколько пустых строк)

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

Подскажите пожалуйста, не гневайтесь на ленивого.
Я понимаю, что решение где-то на поверхности, но тем не менее хотя бы натолкните на мысль
Название: пустые строки в массиве
Отправлено: sergo_stavropol от 04 Января 2003, 13:49:16
у меня возникали следующие мысли:

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

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

где  я ближе к истине?
Название: пустые строки в массиве
Отправлено: Меняздесьдавнонет от 04 Января 2003, 14:34:58
нигде.
файл надо читать не функцией file, а функцией fread
и удалять пустые строки функцией trim
и причем не при чтении из файла, а сразу по приходе из формы.
Название: пустые строки в массиве
Отправлено: Bang от 04 Января 2003, 14:40:25
rtrim() вроде как отсекает пробелы справа, нет?
или тебе что-то другое нужно?

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


тогда уж двойные пробелы заменять на одинарные до тех пор, пока не останется двойных пробелов.
Название: пустые строки в массиве
Отправлено: sergo_stavropol от 04 Января 2003, 14:50:38
RomikChef
"непосредственно на выходе из формы" - не совсем понятно, где это
Название: пустые строки в массиве
Отправлено: Bang от 04 Января 2003, 14:53:06
Цитировать
"непосредственно на выходе из формы" - не совсем понятно, где это

я думаю, RomikChef имел в виду - там, где ты обрабатываешь первый раз эти данные, полученные из формы. Ты же ведь их как-то хранишь? Вот перед тем, как положить на хранение и обрабатываешь как тебе надо.
Название: пустые строки в массиве
Отправлено: sergo_stavropol от 04 Января 2003, 16:20:42
сработала все-таки replace

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

кстати,  я слышал, что ereg_replace гораздо медленее str_replace() и для обычных строковых символов лучше использовать последнюю
так ли это?
Название: пустые строки в массиве
Отправлено: Меняздесьдавнонет от 04 Января 2003, 16:37:32
так.

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

У меня встречный вопрос:
Какое приведенный код имеет отношение к вопросу, который был первоначально задан?
Где тут массив и пустые строки?
Название: пустые строки в массиве
Отправлено: sergo_stavropol от 04 Января 2003, 16:49:07
RomikChef

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

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

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

Если что не так , сорри. Я стараюсь быть законопослушным участником. Но при этом все ранвно ленивым :)
Название: пустые строки в массиве
Отправлено: Меняздесьдавнонет от 04 Января 2003, 17:27:11
понятно.
то есть, тебе надо, чтобы переменная не содержала переводов строк.
Наконец-то мы добрались до истины.

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

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