2010-03-28 36 views
105

Tôi cố gắng sử dụng dấu nháy đơn càng nhiều càng tốt và tôi nhận thấy rằng tôi không thể sử dụng \ n trong dấu nháy đơn. Tôi biết tôi có thể chỉ cần nhập một dòng mới theo nghĩa đen bằng cách nhấn trở lại, nhưng mà vít lên thụt đầu dòng mã của tôi.In dòng mới bằng PHP trong dấu nháy đơn

Có một số ký tự ASCII hoặc thứ gì đó mà tôi có thể nhập để tạo dòng mới khi tôi đang sử dụng dấu nháy đơn không?

+0

Nếu có ai quan tâm đến giải pháp hoạt động cho cả trình duyệt và thiết bị đầu cuối (cli, dòng lệnh): http://stackoverflow.com/a/9665253/1923625 –

Trả lời

119

Không, bởi vì một dấu ngoặc kép thậm chí còn hạn chế thay thế mã hex.

echo 'Hello, world!' . "\xA"; 
+1

Ah ok .. Tôi đã hy vọng tôi sẽ không có để nghỉ mát đến đó .. Cảm ơn! – Matt

+0

yessir. Anh trả lời nó trong chưa đầy 10 phút. Tôi phải đợi đến lúc chấp nhận, sau đó tôi quên mất nó haha. – Matt

+1

Có cách nào khác không? Tôi cần phải sử dụng nó trong một preg_replace mà tôi không thể sử dụng dấu ngoặc kép trong. –

21

Nếu bạn là echo ing để trình duyệt, bạn có thể sử dụng <br/> với tuyên bố của bạn:

echo 'Will print a newline<br/>'; 
echo 'But this wont!'; 
+2

Thật không may là nhiều hơn cho mục đích thiết bị đầu cuối .. cảm ơn cho phản ứng của bạn mặc dù. – Matt

+0

Không phải là một vấn đề, chúc may mắn. –

+0

perrrrrrfect !!! – SpaceDog

3

Bạn có thể muốn xem xét sử dụng < < <

ví dụ Thông tin

<<<VARIABLE 
this is some 
random text 
that I'm typing 
here and I will end it with the 
same word I started it with 
VARIABLE 

thêm tại: http://php.net/manual/en/language.types.string.php

Btw - Một số môi trường Mã hóa không biết làm thế nào để xử lý các cú pháp trên.

+1

Ah có ... nhưng tôi vẫn HATE thực tế rằng VARIABLE ở cuối phá vỡ tất cả các thụt đầu dòng trong mã của bạn ... Tôi đã chạy vào rất nhiều (stupid) lỗi sử dụng cú pháp HEREDOC – Matt

0

Không, theo số documentation, PHP không nhận dạng được ký hiệu đặc biệt trong các dấu nháy đơn. không có lý do duy nhất để sử dụng dấu nháy đơn càng nhiều càng tốt

+0

Có một sự gia tăng hiệu suất nhỏ để sử dụng dấu nháy đơn . Ngoài ra, nó có vẻ như một thực hành tốt để xác định rõ ràng khi bạn muốn các biến được thay thế. –

+3

@Jackson có ** không ** tăng hiệu suất. Bằng mọi cách. Hãy quên đi những tin đồn trẻ con này. Và không, đừng nói về các biến, mà là các chuỗi đặc biệt. Nếu bạn muốn bất kỳ chuỗi nào, một biến hoặc một dòng mới sẽ được mở rộng - hãy sử dụng dấu ngoặc kép, ** trên mục đích của nó **. Và OP từ chối sử dụng nó vào mục đích của nó là vô nghĩa. –

5

Trình tự thoát duy nhất bạn có thể sử dụng trong dấu nháy đơn là cho chính trích dẫn đó.

$foo = 'That\'s great'; 

Cách duy nhất bạn có thể chèn một dòng mới vào một chuỗi tạo ra với dấu nháy đơn là để chèn một dòng mới đen

$bar = 'That\'s 
cheating'; 
21

FYI nó có thể để có được dòng mới thành chuỗi mà không cần dấu ngoặc kép:

printf('Please%1$sgive%1$sme%1$snewlines%1$s', PHP_EOL); 

Điều này có thể hữu ích Nếu nỗi lo sợ gấp đôi không hợp lý của bạn không biết giới hạn. Mặc dù tôi sợ việc chữa trị này có thể tệ hơn bệnh.

+0

Nó không phải là một nỗi sợ hãi .. bạn chỉ nhận được hiệu suất tốt hơn khi bạn sử dụng dấu nháy đơn, vì vậy tôi cố gắng sử dụng chúng thường xuyên hơn sau đó không .. nhưng yah, đây không thực sự là một giải pháp tuyệt vời cho vấn đề này đáng giá. Cảm ơn. – Matt

+4

Tôi chưa thử nghiệm nó nhưng tôi sẽ đặt cược rằng việc sử dụng dấu ngoặc kép nhanh hơn bằng cách sử dụng 'printf' hoặc chuỗi catenation nói chung. –

+0

Nó không phải lúc nào cũng không hợp lý, hai dấu nháy kép có thể có vấn đề, tùy thuộc vào những gì bạn muốn làm. 'echo 'Ví dụ, tôi muốn điều này để nhổ ra mã php. \ Nđó $ this-> stuff;'; ' –

88
echo 'hollow world' . PHP_EOL; 

Sử dụng hằng số PHP_EOL thì hệ điều hành cũng độc lập.

+1

PHP_EOL Không hoạt động. PHP 5.5.xx –

+2

hoạt động trong PHP 5.6.9 –

+2

Bạn thường không nên sử dụng PHP_EOL vì điều này làm cho mã của bạn phụ thuộc vào hệ thống đang chạy. Ví dụ. máy chủ Linux của bạn đang giao tiếp với một máy chủ khác và sau đó máy chủ của bạn được thay thế bằng Windows ... Không tốt. – Andreas

8

có sự khác nhau về việc sử dụng đơn VS dấu ngoặc kép trong PHP

ví dụ: 1. echo '$var\n'; 2. echo "$var\n";

  • trong 1, PHP sẽ in theo nghĩa đen: $var\n
  • trong 2 , PHP sẽ phải tìm kiếm vị trí trong bộ nhớ cho $var và trả về giá trị ở vị trí đó, đồng thời, nó sẽ phải phân tích \ n làm ký tự dòng mới và in kết quả là

Chúng tôi ở trong phạm vi một phần triệu giây, nhưng có sự khác biệt về hiệu suất.Tôi khuyên bạn nên sử dụng dấu nháy đơn bất cứ khi nào có thể, ngay cả khi biết rằng bạn sẽ không thể nhận thấy sự gia tăng hiệu suất này. Nhưng tôi là một nhà phát triển hoang tưởng khi nói đến hiệu suất.

+0

Tôi xin lỗi bạn vì đã cố gắng tìm kiếm cách tốt nhất để làm điều này thay vì sử dụng giải pháp trích dẫn kép A.K.A Giải pháp phát triển lười biếng. – linuxdev

+0

Cách tốt nhất tôi biết để làm những gì bạn muốn: echo 'foo', "\ n"; – linuxdev

+2

Cách nhanh nhất để làm điều đó là 'echo $ var +" \ n ";' – Hengjie

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