2011-01-03 44 views
5
//remove line breaks 
function safeEmail($string) { 
    return preg_replace('((?:\n|\r|\t|%0A|%0D|%08|%09)+)i' , '', $string); 
} 

/*** example usage 1***/ 
$from = 'HTML Email\r\t\n'; 

/*** example usage 2***/ 
$from = "HTML Email\r\t\n"; 

if(strlen($from) < 100) 
{ 
    $from = safeEmail($from); 

    echo $from; 
} 

1 lợi nhuận HTML Email \ r \ t \ n khi 2 trả về HTML Emailphp đơn và đôi dấu ngoặc kép

gì với dấu ngoặc kép?

+0

có thể trùng lặp của [Sự khác biệt giữa dấu trích dẫn đơn và chuỗi trích dẫn kép trong php] (http://stackoverflow.com/questions/3446216/difference-between-single-quote-and-double-quote-string-in -p) – marcog

+0

Hãy để tôi chỉ cho bạn một chút phép thuật: google -> php dấu nháy đơn -> http://php.net/types.string -> cách hoàn chỉnh hơn và thông tin rõ ràng hơn bạn có thể lấy tại đây –

Trả lời

11

Theo PHP Documentation

Không giống như cú pháp dụng dấu ngoặc kép và heredoc, các biến và mã escape cho các ký tự đặc biệt sẽ không được mở rộng khi chúng xảy ra trong chuỗi trích dẫn duy nhất.

Nói cách khác, chuỗi được trích dẫn kép mở rộng biến và thoát chuỗi cho các ký tự đặc biệt. Các chuỗi được trích dẫn đơn không.

Vì vậy, trong ví dụ1, với chuỗi được trích dẫn duy nhất, chuỗi chính xác như bạn thấy. Dấu gạch chéo và tất cả.

Nhưng trong ví dụ 2, thay vì kết thúc bằng chuỗi \r\t\n, kết thúc bằng một dấu xuống dòng, một tab và sau đó là một dòng mới. Nói cách khác, các chuỗi thoát cho các ký tự đặc biệt được mở rộng.

+3

Do đó, 'strlen ('HTML Email \ r \ t \ n') '= 16,' strlen ("HTML Email \ r \ t \ n") '= 13, nếu điều đó làm cho nó rõ ràng hơn :) – jensgram

0

với dấu nháy đơn trong PHP, ký tự đặc biệt làm \ n \ r \ t ... không hoạt động như mong đợi. Theo docs:

Để chỉ định một giá duy nhất theo nghĩa đen, thoát khỏi nó với một dấu chéo ngược (\). Để chỉ định một dấu chéo ngược theo nghĩa đen, hãy gấp đôi nó (\\). Tất cả các dấu gạch chéo ngược khác sẽ được xử lý dưới dạng dấu gạch chéo theo nghĩa đen: điều này có nghĩa là các trình tự thoát khác mà bạn có thể sử dụng, chẳng hạn như \r hoặc \n, sẽ được xuất theo nghĩa đen như được chỉ định thay vì có bất kỳ ý nghĩa đặc biệt nào.

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