У меня есть txt-файл, такой как этот
Hello World John play football
Я хочу удалить новый символ строки при чтении этого текстового файла, но я не знаю, как он выглядит как файл .txt, а его кодировка – utf-8
Просто используйте функцию file
с флагом FILE_IGNORE_NEW_LINES
.
file
читает целый файл и возвращает массив, содержащий все строки файла.
Каждая строка содержит новый символ линии в конце по умолчанию, но мы можем принудительно выполнить обрезку с помощью FILE_IGNORE_NEW_LINES
.
Так будет просто:
$lines = file('file.txt', FILE_IGNORE_NEW_LINES);
Результат должен быть:
var_dump($lines); array(5) { [0] => string(5) "Hello" [1] => string(5) "World" [2] => string(4) "John" [3] => string(4) "play" [4] => string(8) "football" }
Существуют разные типы переводов. Это приведет к удалению всех трех видов в $string
:
$string = str_replace(array("\r", "\n"), '', $string)
Если вы собираетесь помещать строки в массив, предполагая разумный размер файла, вы можете попробовать что-то вроде этого.
$file = 'newline.txt'; $data = file_get_contents($file); $lines = explode(PHP_EOL, $data); /** Output would look like this Array ( [0] => Hello [1] => World [2] => John [3] => play [4] => football ) */
Я отмечаю, что способ, которым он был вставлен в вопросе, в этом текстовом файле есть символы пробела в конце каждой строки. Я предполагаю, что это было случайно.
<?php // Ooen the file $fh = fopen("file.txt", "r"); // Whitespace between words (this can be blank, or anything you want) $divider = " "; // Read each line from the file, adding it to an output string $output = ""; while ($line = fgets($fh, 40)) { $output .= $divider . trim($line); } fclose($fh); // Trim off opening divider $output=substr($output,1); // Print our result print $output . "\n";