2012-03-29 49 views
5

Tôi đã txt nộp nội dung của nó như thế nàyloại bỏ ký tự dòng mới từ file txt sử dụng php

Hello 
World 
John 
play 
football 

Tôi muốn xóa ký tự dòng mới khi đọc file văn bản này, nhưng tôi không biết làm thế nào cho nó trông như tệp .txt và mã hóa của tệp là utf-8

+0

Mira, bạn có muốn thay thế bằng gì, hoặc với một số loại khác của khoảng trắng? – ghoti

Trả lời

8

Có các loại dòng mới khác nhau. Điều này sẽ loại bỏ tất cả 3 loại trong $string:

$string = str_replace(array("\r", "\n"), '', $string) 
+0

có 2 loại hay 3 loại? – Mira

+0

@Mira, 3 loại ('\ r',' \ n' và '\ r \ n') và tập lệnh trong câu trả lời của tôi sẽ xử lý kết quả 3. –

0

tôi lưu ý rằng cách thức mà nó được dán trong câu hỏi, file văn bản này dường như có nhân vật không gian vào cuối mỗi dòng. Tôi cho rằng đó là ngẫu nhiên.

<?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"; 
+0

sẽ không hợp lệ khi bất kỳ từ nào sẽ có thêm hơn 40 byte (không phải đề cập đến nó sẽ chỉ hoạt động cho các từ đơn trên mỗi dòng) 'trim' không phải là một lựa chọn tốt nếu - sẽ đủ để sử dụng rtrim (Bạn chỉ cần cắt bên phải) - đừng quên đối số thứ hai là một mặt nạ ký tự. Theo mặc định nó sẽ cắt: không gian, tab, dòng mới, vận chuyển trở lại, null-byte và dọc tab. – abuduba

3

Nếu bạn sắp xếp các dòng vào một mảng, giả định kích thước tệp hợp lý bạn có thể thử một cái gì đó như thế này.

$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 
) 

*/ 
8

Chỉ cần sử dụng chức năng file với cờ FILE_IGNORE_NEW_LINES.

file đọc toàn bộ tệp và trả về một mảng chứa tất cả các dòng tệp.

Mỗi dòng chứa ký tự dòng mới ở cuối của chúng theo mặc định, nhưng chúng tôi có thể thực thi cắt tỉa theo cờ FILE_IGNORE_NEW_LINES.

Vì vậy, nó sẽ chỉ đơn giản là:

$lines = file('file.txt', FILE_IGNORE_NEW_LINES); 

Kết quả sẽ là:

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" 
} 
+0

Thực sự hữu ích. Không cần phải suy nghĩ về nguồn cấp dữ liệu dòng. Cảm ơn bạn!!! – shirkkan

+1

Bạn cũng có thể sử dụng: '$ lines = file ('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)'. Bằng cách này bạn cũng bỏ qua các dòng mới trống! –

Các vấn đề liên quan