una - Recortar & nbsp; con PHP
unescape php (7)
Encontré 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));
Tengo una frase como esta.
1 $nbsp; 2 3 4
Como ves, entre 1 2 y 3 de texto, hay espacios adicionales. Quiero la salida con un solo espacio entre ellos. por lo que mi salida será 1 2 3 4
Si utilizo recortar, solo puede eliminar los espacios en blanco, pero no que
¿Cómo puedo usar el recorte de PHP para obtener la salida de esta manera?
Un poco tarde para responder, pero espero que pueda 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 convierten en una brisa. Incluso los caracteres extranjeros pueden reemplazarse copiando directamente los caracteres de pegado desde el navegador al código php. La siguiente función reemplaza
con un espacio. Luego, todos los espacios en blanco adicionales se reemplazan con un solo espacio en blanco usando preg_replace()
. Los espacios en blanco 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;
1 2 3 4
Una respuesta más inclusiva para aquellos que solo quieren hacer un recorte:
$str = trim($str, " /t/n/r/0/x0B/xC2/xA0");
Las mismas entidades html de manejo de recorte:
$str = trim(html_entity_decode($str), " /t/n/r/0/x0B/xC2/xA0");
Esta interacción html_entity_decode y recortar se describe en los documentos de PHP aquí: http://php.net/manual/en/function.html-entity-decode.php#refsect1-function.html-entity-decode-notes
si tu cadena realmente tiene "",
$str="1 2 3 4";
$s = str_replace(" ","",$str);
print $s;
$str = " abc ";
echo trim($str, "/xC2/xA0"); //abc
$str = "1 $nbsp; 2 3 4";
$new_str = str_replace(" ", '''', $str);
echo str_replace ( " ", "", "1 2 3 4" );
solo recuerde que debe hacer eco del resultado de str_replace y tampoco debe preocuparse por los espacios en blanco, ya que el navegador solo mostrará un espacio en blanco.