2011-07-05 27 views
6

vì một số lý do này: preg_replace("/\\n/", "<br />", $string); không hoạt động.preg_replace n trong chuỗi

Đầu ra chuỗi theo định dạng sau: blah blah blah\nblah blah blah ngay cả sau khi thay thế phôi.

Tất cả những gì tôi muốn làm là thay đổi nếu cho số <br />.

nl2br() cũng không hoạt động, nhưng chỉ là văn bản của nó, tôi không chắc liệu nó có cần hay không.

Cảm ơn

** Update **

các preg_replace công trình vào một từ trong chuỗi. :(

+4

Nó thực sự xuất ra '\ n'? Bạn chắc chắn, đó là một dòng mới và không chỉ là một '\' và 'n'? – KingCrunch

+0

không ... đây là lý do tại sao tôi figured rằng nl2br sẽ không làm việc và tại sao tôi đã '\\ n' trong preg của tôi thay thế để thoát khỏi' \ ' –

+0

Tôi không chèn vào cơ sở dữ liệu ... đây chỉ là để hiển thị trên trang web. –

Trả lời

5

thử này

str_replace("\n", "<br />", $string); 
+0

hoạt động với các dấu nháy đơn như felix được đề xuất. :) thanks –

+0

Điều này có thể làm việc với dấu nháy đơn (và trên thực tế, preg_replace với dấu nháy đơn KHÔNG làm việc cho tập lệnh thử nghiệm của tôi), nhưng nó không giải thích tại sao preg_replace không hoạt động. – NotoriousWebmaster

+0

Nó 'KHÔNG làm việc với dấu nháy đơn trong hầu hết các trường hợp. –

7

Nếu bạn muốn thay thế các literal \n và không phải là dòng sản phẩm mới thực tế, Hãy thử:

<?php 
echo preg_replace("/\\\\n/", "<br />", 'Hello\nWorld'); 

Thông báo số lượng backslashes Các đúp quote kèm theo. chuỗi /\\\\n/ được diễn giải bởi công cụ PHP là /\\n/. Chuỗi này khi được truyền cho động cơ preg được hiểu là chữ số \n.

Lưu ý rằng cả PHP sẽ diễn giải "\n" làm ký tự ASCII 0x0A. Tương tự như vậy, động cơ preg sẽ giải thích '/\n/' như một ký tự dòng mới (không chính xác chắc chắn một/s).

+0

Bởi vì ''Xin chào \ nWorld'' được trích dẫn một lần, bạn không thử nghiệm thay thế một dòng mới. Điều này làm việc: 'echo preg_replace ("/\\ n/"," "," này rằng ");' (Thay thế khoảng trống giữa "this" và "that" bằng cách nhấn Enter và đóng dấu trên dòng tiếp theo.). –

4

Bạn đã thử với nhiều công cụ sửa đổi dòng trên RegEx chưa?

preg_replace("/\\n/m", "<br />", $string); 
+0

+1 '\ n' cần chế độ nhiều dòng. – hakre

+0

Câu trả lời khác với lần thoát bổ sung là câu trả lời đúng trong trường hợp này. Tôi đã phải đối mặt với cùng một vấn đề, văn bản có ký tự '\' theo sau là ký tự 'n' và mục tiêu là thay thế nó bằng ký tự dòng mới 0x0A. – KenB

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