ultimo - Eliminar caracteres extraños de la cadena PHP
remove html tags php (12)
Sí, esto no está funcionando para mí. ¿Cuál es la solución para esto? - Vaichidrewar 12 de marzo a las 22:29
Agregue esto al encabezado HTML (o modifíquelo si ya existe):
//Remove from a single line string
$output = "Likening ‘not-critical’ with";
$output = preg_replace(''/[^(/x20-/x7F)]*/'','''', $output);
echo $output;
//Remove from a multi-line string
$output = "Likening ‘not-critical’ with /n Likening ‘not-critical’ with /r Likening ‘not-critical’ with. '' ! -.";
$output = preg_replace(''/[^(/x20-/x7F)/x0A/x0D]*/'','''', $output);
echo $output;
Esto codificará los caracteres divertidos como "-" en UTF-8 para que la función str_replace()
los interprete correctamente.
O puedes hacer esto:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
esto es lo que tengo ahora
Al dibujar una fuente RSS en el php, se lee el xml sin procesar de la fuente rss:
Paul’s Confidence
El php que tengo hasta ahora es este.
$newtitle = $item->title;
$newtitle = utf8_decode($newtitle);
Lo anterior vuelve;
Paul?s Confidence
Si elimino el utf_decode, obtengo esto
Paul’s Confidence
Cuando intento un str_replace;
$newtitle = str_replace("”", "", $newtitle);
No funciona, me sale;
Paul’s Confidence
¿Alguna idea?
¿La configuración de codificación de caracteres para su servidor PHP es diferente a UTF-8? Si es así, ¿hay alguna razón o podría cambiarse a UTF-8? Aunque no almacenamos datos en UTF-8 en nuestra base de datos, descubrí que configurar el conjunto de caracteres del servidor web en UTF-8 parece ayudar a resolver los problemas de los conjuntos de caracteres.
Me interesaría escuchar las opiniones de otros acerca de esto ... si me estoy configurando para problemas al configurar el servidor web en UTF-8 mientras almaceno los datos enviados en Latin1 en nuestra base de datos mysql. Sé que hubo una razón por la que elegí Latin1 para la base de datos, pero no puedo recordar de qué se trataba. Curiosamente, nuestra configuración actual parece permitir la entrada de caracteres que no son UTF-8 y el procesamiento posterior ... ¿parece que almacenar en Latin1 no impide la decodificación y visualización subsiguientes de todos los caracteres UTF-8?
Esta es mi función que siempre funciona, independientemente de la codificación:
function RemoveBS($Str) {
$StrArr = str_split($Str); $NewStr = '''';
foreach ($StrArr as $Char) {
$CharNo = ord($Char);
if ($CharNo == 163) { $NewStr .= $Char; continue; } // keep £
if ($CharNo > 31 && $CharNo < 127) {
$NewStr .= $Char;
}
}
return $NewStr;
}
Cómo funciona:
echo RemoveBS(''Hello õhowå åare youÆ?''); // Hello how are you?
Esto eliminará todos los caracteres no-ascii / caracteres especiales de una cadena.
ini_set(''default_charset'', ''utf-8'');
Lea en http://us.php.net/manual/en/function.html-entity-decode.php
Ese & símbolo es un código html para que puedas decodificarlo fácilmente.
No funciona. Necesitas usar $ arr1 = str_split ($ str), luego foreach y echo ($ arr1 [$ k]) Esto te mostrará exactamente qué caracteres están escritos en la cadena.
Prueba esto:
$newtitle = html_entity_decode($newtitle, ENT_QUOTES, "UTF-8")
Si esta no es la solución, navegue por esta página http://us2.php.net/manual/en/function.html-entity-decode.php
Resolví el problema. Parece ser una solución corta en lugar del problema mayor, pero funciona.
$newtitle = str_replace(''’'', "''", $newtitle);
También encontré este fragmento útil que puede ayudar a otros con el mismo problema;
<?
$find[] = ''“''; // left side double smart quote
$find[] = ''â€''; // right side double smart quote
$find[] = ''‘''; // left side single smart quote
$find[] = ''’''; // right side single smart quote
$find[] = ''…''; // elipsis
$find[] = ''—''; // em dash
$find[] = ''–''; // en dash
$replace[] = ''"'';
$replace[] = ''"'';
$replace[] = "''";
$replace[] = "''";
$replace[] = "...";
$replace[] = "-";
$replace[] = "-";
$text = str_replace($find, $replace, $text);
?>
Gracias a todos por su tiempo y consideración.
Sólo una solución simple.
Si su cadena contiene este tipo de caracteres extraños, suponga que $text
contiene algunos de estos, simplemente haga lo que se muestra a continuación:
$mytext=mb_convert_encoding($text, "HTML-ENTITIES", ''UTF-8'')
y funcionará ..
Una solución super simple es decodificar los caracteres cuando se carga la página
Simplemente copie / pegue lo siguiente al principio del script
header(''Content-Type: text/html; charset=UTF-8'');
mb_internal_encoding(''UTF-8'');
mb_http_output(''UTF-8'');
mb_http_input(''UTF-8'');
mb_regex_encoding(''UTF-8'');
Referencia: http://php.net/manual/en/function.mb-internal-encoding.php comentario dejado por webfav en web dot de
Utilice el siguiente código PHP para eliminar
html_entity_decode(mb_convert_encoding(stripslashes($name), "HTML-ENTITIES", ''UTF-8''))
Please Try this.
$find[] = ''/“/'' //''“''; // left side double smart quote
$find[] = ''/”/'' //''â€''; // right side double smart quote
$find[] = ''/‘/'' //''‘''; // left side single smart quote
$find[] = ''/’/'' //''’''; // right side single smart quote
$find[] = ''/ /'' //''…''; // elipsis
$find[] = ''/‖/'' //''—''; // em dash
$find[] = ''/–/'' //''–''; // en dash
$replace[] = ''“'' // ''"'';
$replace[] = ''”'' // ''"'';
$replace[] = ''‘'' // "''";
$replace[] = ''’'' // "''";
$replace[] = ''⋯'' // "...";
$replace[] = ''—'' // "-";
$replace[] = ''–'' // "-";
$text = str_replace($find, $replace, $text);