Hãy xem một bài kiểm tra hiệu suất!
Mọi thứ đã thay đổi kể từ lần cuối tôi trả lời câu hỏi này, vì vậy đây là một bài kiểm tra nhỏ mà tôi đã tạo ra. Tôi đã so sánh bốn phương pháp hứa hẹn nhất, preg_replace so với strtr so với str_replace và strtr đi hai lần vì nó có một ký tự duy nhất và chế độ mảng đến mảng.
Bạn có thể chạy bài kiểm tra ở đây:
Kết quả
251.84 ticks using preg_replace["/[\r\n]+/"," ",$text];
81.04 ticks using strtr[$text,["\r"=>"","\n"=>""]];
11.65 ticks using str_replace[$text,["\r","\n"],["",""]]
4.65 ticks using strtr[$text,"\r\n"," "]
[Lưu ý rằng đó là một thử nghiệm thời gian thực và tải máy chủ có thể thay đổi, vì vậy có thể bạn sẽ có được các số liệu khác nhau.]
Giải pháp preg_replace
chậm hơn đáng kể, nhưng không sao cả. Họ làm một công việc khác nhau và PHP không có Regex chuẩn bị, vì vậy nó phân tích biểu thức mỗi lần. Nó chỉ đơn giản là không công bằng khi mong đợi họ giành chiến thắng.
Mặt khác, trong dòng 2-3, str_replace
và strtr
đang thực hiện gần như cùng một công việc và chúng hoạt động khá khác nhau. Họ đối phó với các mảng, và họ làm chính xác những gì chúng tôi đã nói với họ - loại bỏ các dòng mới, thay thế chúng không có gì.
Cái cuối cùng là một thủ thuật bẩn thỉu: nó thay thế các nhân vật bằng các nhân vật, nghĩa là Newlines có không gian. Nó thậm chí còn nhanh hơn và nó có ý nghĩa bởi vì khi bạn thoát khỏi các lần phá vỡ dòng, có lẽ bạn không muốn kết hợp từ ở cuối một dòng với từ đầu tiên của tiếp theo. Vì vậy, nó không chính xác những gì OP mô tả, nhưng nó rõ ràng là nhanh nhất. Với các chuỗi dài và nhiều thay thế, sự khác biệt sẽ phát triển vì sự thay thế của nhân vật là tuyến tính theo bản chất.
Phán quyết: str_replace
chiến thắng nói chung
Và nếu bạn có đủ khả năng để có không gian thay vì [\r\n]
, hãy sử dụng strtr
với các ký tự. Nó hoạt động nhanh gấp đôi trong trường hợp trung bình và có thể nhanh hơn rất nhiều khi có nhiều dòng ngắn.
echo nl2br ["dòng mới sẽ bắt đầu từ đây \ n trong chuỗi này \ r \ n trên cửa sổ trình duyệt"] ;.
Nhân vật dòng mới trong PHP là gì? — Inserts HTML line breaks before all newlines in a string
Nó là một ký tự trong một chuỗi đại diện cho một đường ngắt, điều đó có nghĩa là sau nhân vật này, một dòng mới sẽ bắt đầu. Có hai ký tự dòng mới cơ bản: lf [ký tự: \ n, unicode: u+000a, ascii: 10, hex: 0x0a]: Đây chỉ đơn giản là ký tự '\ n' mà tất cả chúng ta đều biết từ những ngày lập trình ban đầu.
Làm thế nào để bạn tạo một dòng mới trong PHP?[string $string
, bool Welcome
0 =
This is my HTML document
Welcome
1]: string
This is my HTML document
Sử dụng các thẻ dòng mới: Các ký tự mới \ n hoặc \ r \ n có thể được sử dụng để tạo một dòng mới bên trong mã nguồn.
[Php 4, Php 5, Php 7, Php 8]NL2BR - Chèn dòng HTML bị hỏng trước tất cả các dòng mới trong một chuỗi
Sự mô tảNL2BR [Chuỗi $string
, Bool
Welcome0 =
This is my HTML document
Welcome1]: Chuỗi
This is my HTML document
Thông số
Welcome2
This is my HTML document
Chuỗi đầu vào.
Welcome
3nl2br[]
This is my HTML document
Welcome4
This is my HTML document
Có sử dụng đường thẳng tương thích XHTML hay không.
Trả về giá trị
Welcome6
This is my HTML document
Có sử dụng đường thẳng tương thích XHTML hay không.
Welcome
This is my HTML document
Trả về giá trị
Welcome7
This is my HTML document
Có sử dụng đường thẳng tương thích XHTML hay không.
This
is
a
string
Trả về giá trị
- Trả về chuỗi bị thay đổi.
- Ví dụ
- Ví dụ #1 sử dụng nl2br []
- Ví dụ trên sẽ xuất ra:
Ví dụ #2 Tạo đánh dấu HTML hợp lệ bằng tham số Welcome
3 ¶
This is my HTML document
Ví dụ #3 Các phân tách dòng khác nhau
Welcome8
This is my HTML document
Welcome9
This is my HTML document
This0
is
a
string
This1
is
a
string
Xem thêm ¶
darenschwenke tại yahoo dot com ¶
This2
is
a
string
This3
is
a
string
This48 năm trước
is
a
string
J dot mons54 tại gmail dot com ¶ ¶
10 năm trước
This6
is
a
string
This7
is
a
string
This1
is
a
string
hyponiq tại gmail dot com ¶
15 năm trước
This9
is
a
string
preg_replace
0
This1
is
a
string
Làm thế nào để bạn xóa một ký tự dòng mới khỏi một chuỗi? ¶
Buzanits tại gmail dot com
preg_replace
2
preg_replace
3
This1
is
a
string
4 năm trước ¶
blacknine313 tại gmail dot com ¶
preg_replace
5
preg_replace
6
preg_replace
7
This1
is
a
string
Gautier Dot Michelin tại Gmail Dot Com ¶ ¶
2 năm trước
preg_replace
9
str_replace
0
str_replace
1
str_replace
2
This1
is
a
string
Justinas M. ¶ ¶
6 năm trước
str_replace
4
str_replace
5
str_replace
6
str_replace
7
str_replace
8Leo Dot Mauro Dot Desenv tại Gmail Dot Com ¶ ¶
7 năm trước
str_replace
9
strtr
0
strtr
1
This1
is
a
string
Collette ¶ ¶
2 năm trước
strtr
3
strtr
4
strtr
5
strtr
6
This1
is
a
string
Justinas M. ¶ ¶
6 năm trước
strtr
8
strtr
9
str_replace
0
This1
is
a
string
Leo Dot Mauro Dot Desenv tại Gmail Dot Com ¶ ¶
7 năm trước
str_replace
2
str_replace
3
str_replace
4
str_replace
5Collette ¶ ¶
Chad tại Nobodyfamous dot ca ¶
str_replace
6
str_replace
7
This1
is
a
string
5 năm trước ¶
Buzanits tại gmail dot com
str_replace
9
[\r\n]
0
This1
is
a
string
4 năm trước ¶
blacknine313 tại gmail dot com ¶
[\r\n]
2
[\r\n]
3
This1
is
a
string
14 năm trước ¶
darenschwenke tại yahoo dot com ¶
[\r\n]
5
[\r\n]
6
This1
is
a
string