разрывы строки обрезки php

http://php.net/manual/en/function.trim.php

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

Я использовал trim($entry," \t\n\r") в попытке удалить эти разрывы строк, но, похоже, ничего полезного не происходит. Когда я echo "[".trim($entry,' \t\n\r')."]\n";, я вижу-

[host2*2012-03-29 22:38:47 *129.118.243.193
]
[host1*2012-03-29 22:48:16*129.118.243.194
]

Что я упускаю?


person Lord Loh.    schedule 29.03.2012    source источник
comment
Попробуйте trim($entry, " \t\n\r"); двойные кавычки необходимы (что-то связанное с интерпретацией escape-символа).   -  person Halcyon    schedule 30.03.2012
comment
@Frits van Campen - я использовал одинарные кавычки после того, как потерпел неудачу с двойными кавычками. Я снова поставил двойные кавычки, но разницы нет!   -  person Lord Loh.    schedule 30.03.2012


Ответы (3)


" \t\n\r"

нет

' \t\n\r'

Обратите внимание на двойные кавычки

См. соответствующую страницу PHP. руководство для объяснения разницы между строками в одинарных и двойных кавычках.

Также обратите внимание на параметр FILE_IGNORE_NEW_LINES для аргумента flags при использовании file()< /а>

person Mark Baker    schedule 29.03.2012
comment
Я думаю, что «FILE_IGNORE_NEW_LINES» будет наиболее полезным, но я все еще хочу знать, как избавиться от разрывов строк с помощью функции trim(). - person Lord Loh.; 30.03.2012

Просто замените

trim($entry,' \t\n\r')

с участием

trim($entry," \t\n\r")

Это проблема разделителя строк. Но обратите внимание, что если разрыв строки находится на двух символах (например, "\r\n"), то он не будет полностью удален.

person Skrol29    schedule 29.03.2012
comment
Я использовал одинарные кавычки после того, как потерпел неудачу с двойными кавычками. Я снова поставил двойные кавычки, но разницы нет! Я не понял часть того, что вы объяснили, с «буксирными персонажами». Если речь идет об unix/windows CRLF или просто LF, то трим должен был удалить его, верно? - person Lord Loh.; 30.03.2012
comment
Ты прав. Моя ошибка. Но если ваша ошибка не решена, вы должны проверить, какой именно последний символ вашей строки. $ord = ord($entry[strlen($entry)-1]) $ord должно быть 10 или 13. - person Skrol29; 30.03.2012

вместо этого используйте двойные кавычки, чтобы символы интерпретировались правильно.

person johnshen64    schedule 29.03.2012
comment
Я использовал одинарные кавычки после того, как потерпел неудачу с двойными кавычками. Я снова поставил двойные кавычки, но разницы нет! - person Lord Loh.; 30.03.2012
comment
Чоп у вас работает? Может быть достаточно, если он работает. Не уверен, почему это не сработает с обрезкой. - person johnshen64; 30.03.2012