Hướng dẫn php multiline string without newline - chuỗi đa dòng php không có dòng mới

Tôi có một chuỗi dài trong PHP không chứa các dòng mới ('\ n').

Quy ước mã hóa của tôi không cho phép các dòng dài hơn 100 ký tự.

Có cách nào để chia chuỗi dài của tôi thành nhiều dòng mà không cần sử dụng. toán tử kém hiệu quả hơn - Tôi không cần phải nối 2 chuỗi vì chúng có thể được đưa ra dưới dạng một chuỗi.

Thanks!

Y

Hỏi ngày 18 tháng 8 năm 2009 lúc 12:02Aug 18, 2009 at 12:02

Hướng dẫn php multiline string without newline - chuỗi đa dòng php không có dòng mới

Đây là mã phù hợp, đã giải quyết tất cả các vấn đề:

$myStr = "
    here is my string
    and it is spread across multiple lines
  ";
  $myStr = str_replace(array("\r","\n"), "", $myStr);  

Nó dựa trên câu trả lời của Lior Cohen, nhưng nó cũng tước vận chuyển trả lại "\ r".

Đã trả lời ngày 28 tháng 11 năm 2016 lúc 1:37Nov 28, 2016 at 1:37

Hướng dẫn php multiline string without newline - chuỗi đa dòng php không có dòng mới

Pascal Kleinpascal KleinPascal Klein

22.7K24 Huy hiệu vàng80 Huy hiệu bạc119 Huy hiệu đồng24 gold badges80 silver badges119 bronze badges

Với cú pháp HEREDOC (hoặc NowDoc, tùy thuộc vào nhu cầu của bạn, hãy kiểm tra liên kết tài liệu):

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);

Nhưng điều này thật tệ ... xin lỗi :-)

Đã trả lời ngày 18 tháng 8 năm 2009 lúc 12:06Aug 18, 2009 at 12:06

Hướng dẫn php multiline string without newline - chuỗi đa dòng php không có dòng mới

Vinko Vrsalovic ♦ Vinko VrsalovicVinko Vrsalovic

323K52 Huy hiệu vàng330 Huy hiệu bạc370 Huy hiệu đồng52 gold badges330 silver badges370 bronze badges

3

Bạn có thể loại bỏ các ký tự dòng mới khỏi chuỗi:

  $myStr = "
    here is my string
    and it is spread across multiple lines
  ";
  $myStr = str_replace("\n", "", $myStr);  

Bạn vẫn nên sử dụng toán tử nối (.) Cho những thứ như vậy. Hình phạt hiệu suất ở đây là không đáng kể nếu bạn đang sử dụng bộ nhớ đệm Opcode (APC) và điều này thực sự sẽ không đáng chú ý khi truy cập DB và logic bổ sung (bao gồm cả vòng lặp) vào phương trình thời gian chạy.

Update:

Cung cấp trang dưới đây đọc. Kết luận ở trên không có sẵn trong văn bản, nhưng kiểm tra cẩn thận sẽ cho thấy nó là hợp lệ.

http://blog.golemon.com/2006/06/how-long-is-piece-of-string.html

Tim Keat

6.2454 Huy hiệu vàng46 Huy hiệu bạc53 Huy hiệu Đồng4 gold badges46 silver badges53 bronze badges

Đã trả lời ngày 18 tháng 8 năm 2009 lúc 12:07Aug 18, 2009 at 12:07

Lior Cohenlior CohenLior Cohen

8.8992 Huy hiệu vàng28 Huy hiệu bạc27 Huy hiệu đồng2 gold badges28 silver badges27 bronze badges

2

Không có gì lạ khi bạn sẽ phải tạo các chuỗi đa dòng khi viết một chương trình trong PHP. Có nhiều cách tạo ra một chuỗi đa dòng trong PHP. Chúng tôi sẽ thảo luận về ba trong số họ một cách chi tiết trong hướng dẫn này.

1. Sử dụng trích dẫn kép và trình tự thoátUsing Double Quotes and Escape Sequences

Như bạn đã biết, chúng ta có thể tạo các chuỗi trong PHP bằng cả trích dẫn đơn và trích dẫn kép. Chúng tôi cũng có trình tự thoát đặc biệt để xuất các ký tự đặc biệt. Ví dụ: chúng ta có thể sử dụng \n cho nguồn cấp dữ liệu và \r để trả lại vận chuyển.

Viết \n hoặc

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
0 bên trong chuỗi của bạn sẽ cung cấp cho bạn các dòng mới trong PHP. Điều này cho phép bạn dễ dàng tạo các ký tự đa dòng. Tuy nhiên, bạn phải nhớ rằng các chuỗi thoát này chỉ hoạt động trong các chuỗi được trích dẫn kép. Cố gắng sử dụng chúng bên trong các trích dẫn đơn sẽ xuất hiện chính xác theo cách chúng được gõ.

Dưới đây là một số ví dụ để tạo chuỗi đa dòng trong PHP với trích dẫn kép:

Một điểm mà tôi muốn đề cập là các chuỗi ký tự mới này là dành riêng cho nền tảng. Điều này có nghĩa là bạn có thể gặp một số hành vi bất ngờ bằng cách mã hóa các chuỗi này trong mã của bạn.

Nói chung, các máy Windows sử dụng máy

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
1 và máy Linux hoặc MacOS sử dụng
$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
2.

2. Sử dụng $multiline = <<foo. This should print a capital 'A': \x41 EOT; $singleline = str_replace("\n","",$multiline); 3 để tạo chuỗi đa dòngUsing $multiline = <<foo. This should print a capital 'A': \x41 EOT; $singleline = str_replace("\n","",$multiline); 3 to Create Multiline Strings

Bạn có thể tránh sử dụng các chuỗi dòng mới được mã hóa cứng trong mã của mình với sự trợ giúp của hằng số

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
3. Hằng số này sẽ tự động tạo kết thúc chính xác của ký hiệu dòng cho nền tảng hiện tại mà tập lệnh đang chạy.

Đối với các chuỗi đa dòng nhỏ, bạn có thể kết hợp mọi thứ trên một dòng. Tuy nhiên, bạn cũng có thể truyền bá chuỗi của mình trên nhiều biến trước khi tham gia nó để tạo chuỗi đa dòng của bạn.

3. Sử dụng cú pháp Heredoc và NowDoc để tạo chuỗi đa dòngUsing Heredoc and Nowdoc Syntax to Create Multiline Strings

Cách thứ ba để tạo ra các chuỗi đa dòng trong PHP liên quan đến việc sử dụng cú pháp Heredoc và NowDoc.

Cú pháp Heredoc yêu cầu chúng tôi cung cấp một định danh và một dòng mới sau toán tử

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
5. Sau đó, chúng tôi viết chuỗi của riêng mình và một lần nữa sử dụng cùng một định danh để đánh dấu phần cuối của chuỗi đa dòng của chúng tôi.

Bắt đầu từ Php 7.3.0, bạn có thể thêm thụt đầu trước khi định danh đóng. Tuy nhiên, hãy nhớ rằng sự thụt của định danh cuối không vượt ra ngoài thụt lề của bất kỳ dòng nào trong chuỗi đa dòng. Cũng đảm bảo rằng thụt lề không có hỗn hợp các không gian và tab.

Như bạn có thể thấy trong ví dụ trên, văn bản trong cú pháp Heredoc hoạt động như thể nó nằm trong trích dẫn kép. Điều gì sẽ xảy ra nếu bạn muốn một cái gì đó mô phỏng hành vi của các chuỗi truy vấn đơn? Đây là nơi bạn sẽ tìm thấy cú pháp NowDoc hữu ích.

Yếu tố khác biệt giữa Heredoc và NowDoc là cái sau đòi hỏi bạn phải kết thúc số nhận dạng của nó trong các trích dẫn đơn. Ví dụ sau đây sẽ làm rõ:

Như bạn có thể thấy, biến

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
6 không được thay thế bằng giá trị thực của nó khi được sử dụng trong cú pháp NowDoc.

Suy nghĩ cuối cùng

Chúng tôi đã tìm hiểu về ba cách khác nhau để tạo chuỗi đa dòng trong PHP. Sử dụng

$multiline = <<foo.
This should print a capital 'A': \x41
EOT;
$singleline = str_replace("\n","",$multiline);
3 để tạo chuỗi đa dòng giúp bạn tránh các giá trị mới được mã hóa cứng, trong khi sử dụng cú pháp Heredoc đảm bảo bạn không phải lo lắng về việc thoát khỏi trích dẫn.

Bạn có thấy bài đăng này hữu ích?

Hướng dẫn php multiline string without newline - chuỗi đa dòng php không có dòng mới

Freelancer, người hướng dẫn

Tôi là một nhà phát triển đầy đủ, người cũng thích viết các hướng dẫn. Sau khi thử một loạt những điều cho đến năm thứ hai của đại học, tôi quyết định làm việc về các kỹ năng phát triển web của mình. Bắt đầu chỉ với HTML và CSS, tôi tiếp tục tiến về phía trước và có được kinh nghiệm trong PHP, JavaScript và Python. Tôi thường dành thời gian rảnh của mình hoặc làm việc cho một số dự án phụ hoặc đi du lịch xung quanh.