2012-03-04 113 views
11

Hice una función para eliminar el salto de línea con php sin éxito, intenté reemplazar todo el código y todavía obtengo este salto de línea, creo un archivo json y no puedo léelo de jsonp con jquery porque estos saltos de línea parecen romperlo todo.PHP eliminar salto de línea o CR LF sin éxito

function clean($text) 
{ 
$text = trim(preg_replace('/\s+/', ' ', $text)); 
$text = preg_replace("/(\r\n|\n|\r|\t)/i", '', $text); 
return $text; 
} 

cuando miro a la fuente, hay un poco de salto de línea appening en toda href, img y ancho esta es una salida json_encode ejemplo:

<a 
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\"> 

salto de línea afer a. se hapenig a img src y ancho

la única manera que puedo quitar éstos rompen con

$text = preg_replace("/\s/i", '', $text); 

Pero understant que no hay espacio dejado en toda la cadena y no es lo que queremos.

+0

Agradezca para todos, pero hasta ahora, ninguna de estas soluciones trabajaron. Pero por lo general la mayoría de estas soluciones deben trabajar, pero yo no entiendo por qué para mi caso no es así – Gino

+0

La única manera que encontré para solucionarlo fue '$ allcontent = preg_replace ('/ $ Gino

+0

I hit the same and no solutions in this post worked for me. I found another similar post and this solution worked for me...hence posting it here: http://stackoverflow.com/a/3340510/405117 – Vikram

Respuesta

0

uso json_encode() y json_decode() desde la extensión JSON para manejar JSON tareas de/serialización:

$myobj = array('foo' => 'bar', 'foz' => 'baz') 

$json_myobj = json_encode($myobj); 
echo $json_myobj; 

$myobj = json_decode($json_myobj); 
print_r($myobj); 
25

Reemplaza esto funciona mejor para mí:

= str_replace (array("\r\n", "\n", "\r"), ' ', $text) 
+0

As a note, in the case of e-mails and other MIME encodings, simply replacing '\r\n' (CRLF) with '\n' should work fine. –

0

Tal vez usted podría intentar caminar el texto carácter Carácter y llame al ord() en cada uno, para que pueda ver si estos caracteres de ruptura son realmente \r,\n s?

Recientemente tuve un problema similar con un espacio en blanco que resultó ser un espacio no rompible ni siquiera dentro de la tabla ASCII (código de orden 194 o algo así).

Si usted está interesado mi solución era no tratar de roturas de filtro, pero para filtrar todo, excepto lo que se espera que sea en el texto, así:

$text = preg_replace("/[^ \na-zа-я0-9`~\[email protected]#\$%\^&\*\(\)_\+\-\=\[\]\{\}\\\|;\:'\",\.\/\<\>\?]+/ui", "", $text); 
+0

hi Tony, this did nothing for me – Gino

1

¿Qué tal esto:

function clean($text) 
{ 
    $parts = explode(' ', $text); 
    foreach ($parts as $key => $value) 
     $parts[$key] = preg_replace('/\s/', ' ', $value); 
    return implode(' ', $parts); 
} 

De hecho, si en lugar de limpiar el archivo JSON de esta manera, puede usar json_encode para crearlo, eliminará este problema en un paso anterior.

+0

Oops, the original code had a big mistake. I have edited right now... –

+0

not working, i don't understand why with all these replace code my json output give me 14 line instead of one. my json output work on many domains and many host, but for this domain (Wordpress website) it give me line break – Gino

0

Un método que utilizo es echo str_replace(array('\r\n', '\r', '\n', '\t'), array('\\r\\n', '\\r', '\\n', '\\t'), $text);

Lo que esto hace es le permite ver lo que los personajes están causando los descansos en el texto, y reemplazar de manera apropiada. Por ejemplo, si tiene un "\ n" rompiendo su texto, cuando usa este código, entonces mostrará una "\ n" en su lugar. Ejemplo:

<a 
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\"> 

se convertiría en:

<a\n href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\"> 

Naturalmente, hay una gran cantidad de otros personajes que se rompen que podría ser utilizado, pero \ r \ n, \ r, \ n y \ t son los más utilizados.

+0

it's crazy but nothing apear. by the way, the json_encode is called this way 'echo $_GET['jsoncallback'].'('.json_encode(array('posts' => mensajes)).') '; ' – Gino

1

¿Qué hay de la siguiente

function clean($text) 
{ 
    return trim(preg_replace("/(\s*[\r\n]+\s*|\s+)/", ' ', $text)); 
} 

la primera parte \s*[\r\n]+\s* reemplazará saltos de línea, que es líder en espacios y está tizón espacios en un solo espacio.

la segunda parte \s+ se contraerán espacios en un espacio.

continuación trim() elimina el espacio inicial/tizón.

0
function clean($text) 
{ 
    return trim(preg_replace('/\\\\r|\\\\n|\\\\t/i', ' ', $text)); 
} 

Funciona bien.

0

Si desea eliminar los CRS y mantener la EPA, es realmente muy simple (sentido común):

$text = str_replace("\r", "", $text); 
Cuestiones relacionadas