2010-03-26 16 views
13

Tengo una oración como esta.Recortar   con PHP

1 $nbsp;     2     3   4 

Como ve, entre 1 2 y 3 textos, hay más espacios. Quiero la salida con solo un espacio entre ellos. entonces mi salida será 1 2 3 4

Si uso trim, solo puede eliminar espacios en blanco, pero no en   ¿Cómo puedo usar PHP trim para obtener la salida de esta manera?

Respuesta

18
$str = "1 $nbsp;     2     3   4"; 
$new_str = str_replace(" ", '', $str); 
+2

código PHP se interpreta en el servidor, no el cliente. El navegador nunca lo ve. –

1

Si la cadena tiene en realidad " ",

$str="1       2     3   4"; 
$s = str_replace("  ","",$str); 
print $s; 
1
echo str_replace (" ", "", "1       2     3   4"); 

sólo recuerda, necesita escribir el resultado de la str_replace y ALO no necesita preocuparse por los espacios en blanco a El el navegador solo mostrará un espacio en blanco.

49

encontrado esto en php.net, funciona muy bien:

$myHTML = " abc"; 
$converted = strtr($myHTML, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES))); 
trim($converted, chr(0xC2).chr(0xA0)); 

Fuente: http://php.net/manual/en/function.trim.php#98812

+0

¿Notaste paréntesis faltantes? – Deele

+26

@Deele No siempre pruebo mi código, pero cuando lo hago, lo hago en producción. –

+1

Excelente Tobias, muchas gracias ... –

11

Una respuesta más inclusiva para los que quieren simplemente hacer un ajuste:

$str = trim($str, " \t\n\r\0\x0B\xC2\xA0"); 

Mismo recortar manejo   entidades html:

$str = trim(html_entity_decode($str), " \t\n\r\0\x0B\xC2\xA0"); 

Este html_entity_decode y recortar la interacción se describe en la documentación de PHP aquí: http://php.net/manual/en/function.html-entity-decode.php#refsect1-function.html-entity-decode-notes

+0

Esto no tira   cuando es solo una cadena de 6 caracteres. –

+0

@ArtemRussakovskii: No se supone que se quite   porque es una entidad html y no es apropiada para el recorte. Si desea recortar   extra usando html_entity_decode en la cadena, primero es la solución adecuada. – Chaoix

5
$str = " abc "; 

echo trim($str, "\xC2\xA0"); //abc 
+2

En general, las respuestas son mucho más útiles si incluyen una explicación de lo que se pretende que haga el código, y por qué eso resuelve el problema sin introducir otros. –

0

Un poco tarde para contestar, pero espero que podría ayudar a alguien más. Lo más importante al extraer contenido de html es usar utf8_decode() en php. Entonces todas las demás operaciones de cuerdas se vuelven simples. Incluso los caracteres extraños pueden reemplazarse copiando directamente los caracteres del navegador al código php. La siguiente función reemplaza   con un espacio. Luego, todos los espacios en blanco adicionales se reemplazan con un espacio en blanco único usando preg_replace(). Los espacios blancos iniciales y finales se eliminan al final.

function clean($str) 
{  
    $str = utf8_decode($str); 
    $str = str_replace(" ", " ", $str); 
    $str = preg_replace('/\s+/', ' ',$str); 
    $str = trim($str); 
    return $str; 
} 

$html = "1 $nbsp;     2     3   4"; 
$output = clean($html); 
echo $output;