Проблемы с символом перевода строки в файлах, созданных скриптом.

TechnO

Guest
Проблемы с символом перевода строки в файлах, созданных скриптом.

Одно название темы выдумывал полчаса чтоб было информативно и не на 2 страницы =)

Яндекс я имел весь день, поиском пользовался и вообще старался. Может и прогядел где решение... Но - всё, достало уже - спрашиваю =)

Проблема такая:

Существует скрипт.

Вот что он делает (не думаю что его код нужен, просто опишу как работает).

Есть файл, каждая строка которого содержит одно слово.

Есть скрипт, грузит в себя этот файл и каждую строку делает элементом массива.

После этого он из каждой строки убирает 2 последних символа (ACSII символы перевода строки) - видимо это ключевой момент во всей проблеме.

После этого результат сравниваеться с некоторым эталонным словом, которое вбиваеться через форму.

С этим скриптом проблем нету, если файл написан в блокноте или другом текстовом редакторе (я использую PSPad). А если этот файл создан другим скриптом - не работает.

Слова через другой скрипт я пробовал вбивать следующими способами:

- из текстарии, просто нажимая ввод для перевода строки;

- из переменной, вписывая между слов \r\n;

- из переменной, вписывая между слов \r.


Не работает и всё. Пробовал варьировать количество символов, которое скрипт убирает с конца строки от нуля до шести. Не работает.

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

Romashov

экспериментатор
Есть скрипт, грузит в себя этот файл и каждую строку делает элементом массива.
После этого он из каждой строки убирает 2 последних символа (ACSII символы перевода строки) - видимо это ключевой момент во всей проблеме.
ты прав
не мучайся, всё уже сделали до тебя и оформили в 2 специльных функциях: [m]file[/m] и [m]rtrim[/m]
 

netmac

Новичок
Для обрезки всяких пробельных символов лучше использовать trim.

и ты не думал что проблема может быть в сравнении? слова там в кирилице?

код ключевых моментов все же не помешает
 

Romashov

экспериментатор
и символ конца строки - это один символ, а не два.
 

TechnO

Guest
Так вот файл грузиться в массив и сравниваетсья с переменной.
В переменной тоже слово, латиницей.
PHP:
foreach (file("file.txt") as $mas)
	{
	if (substr($mas, 0, -2)=="$word")
{
$wordok=1;
}
Файл котоырй открываеться, пишется так:
PHP:
$f=fopen("$filename","a"); 
fwrite($f, $data); 
fclose($f);

Так вот, если создать блокнотом файл,в котором написать:

word1
word2
word3

Всё срабатывает.

Если писать в файл из текстарии или из переменной вставляя между словами \n\r получаеться

word1

word2

word3

и ничего не работает.

Если писать из переменно и между слов стаить \r, то получаеться вроде как надо:

word1
word2
word3

Но всеравно не работает первый скрипт.
 

Фанат

oncle terrible
Команда форума
TechnO
если до тебя ещё не дошло, я тебе поясню.
ЗАБУДЬ про файл, который пишет.
проблема у тебя в том, который читает.

проблема заключается в том, что ты не умеешь удалять переводы строк.
как это делать, тебе написал netmac
это волшебное слово [m]trim[/m]

ещё вопросы будут?
 

TechnO

Guest
Пока нет, пошел пробовать =) Всем спаисбо.
 

Фанат

oncle terrible
Команда форума
при записи же из текстарии НИЧЕГО НИКУДА НЕ НАДО ВСТАВЛЯТЬ ВООБЩЕ
 

TechnO

Guest
Всё получилось с использованием trim, огромное всем спасибо!
 
Сверху