2011-01-03 43 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 devuelve HTML de correo electrónico \ r \ t \ n mientras 2 retornos de correo electrónico HTMLcomillas simples y dobles php

lo que pasa con las cotizaciones?

+0

posible duplicado de [Diferencia entre comillas simples y comillas dobles en php] (http://stackoverflow.com/questions/3446216/difference-between-single-quote-and-double-quote-string-in -php) – marcog

+0

Déjame mostrarte un poco de magia: google -> php comillas simples -> http://php.net/types.string -> forma más completa y clara que la que puedes obtener aquí –

Respuesta

11

Según el PHP Documentation

A diferencia de las sintaxis de comillas dobles y heredoc, variables y secuencias de escape para caracteres especiales no serán expandidas cuando ocurren en cadenas entre comillas sencillas.

En otras palabras, las cadenas entre comillas dobles expanden variables y secuencias de escape para caracteres especiales. Las cadenas de comillas simples no.

Por lo tanto, en el ejemplo 1, con la secuencia de una sola cita, la cadena es exactamente como la ve. Barras y todo.

Pero en el ejemplo 2, en vez de terminar con la cadena \r\t\n, termina con un retorno de carro, una pestaña y luego una nueva línea. En otras palabras, las secuencias de escape para caracteres especiales se expanden.

+3

Por lo tanto, 'strlen ('HTML Email \ r \ t \ n') '= 16,' strlen ("HTML Email \ r \ t \ n") '= 13, si eso lo hace más claro :) – jensgram

0

con comillas simples en PHP los caracteres especiales como \ n \ r \ t ... no funciona como se esperaba. De acuerdo con la docs:

Para especificar una comilla simple literal, escape con una barra invertida (\). Para especificar una barra invertida literal , duplícela (\\). Todas las demás instancias de barra diagonal inversa se tratarán como una barra invertida literal : esto significa que las otras secuencias de escape a las que esté acostumbrado, como \r o \n, se generarán literalmente como se especifica en lugar de tener un significado especial.

Cuestiones relacionadas