Foros del Web » Programando para Internet » PHP »

convertir acentos y tildes a html

Estas en el tema de convertir acentos y tildes a html en el foro de PHP en Foros del Web. Hola, tengo una tabla con campos donde tengo que introducir mucho texto y me gustaria que a la hora de la consulta se vea bien ...
  #1 (permalink)  
Antiguo 04/04/2004, 04:19
 
Fecha de Ingreso: abril-2004
Ubicación: Veracruz, Veracruz
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta convertir acentos y tildes a html

Hola, tengo una tabla con campos donde tengo que introducir mucho texto y me gustaria que a la hora de la consulta se vea bien en html y no aparesca así por ejemplo:
ZӌAR

esto en realidad es

ZOLÁR

en mi campo tendría que escribirlo así:

ZOL& Aacute;R

pero yo quiero que cuando lo escriba ZOLÁR, a como va, no tenga que modificarlo más.

Chequen que por si le sirve a alguien dejo todo mi código ya paginado (este es un ejemplo donde se acomodan los datos de una tabla con respecto a un campo especifico cuyo contenido de texto comienza con caracteres especiales y numeros unicamente y además pagina los resultados con un formulario):


Código PHP:
  <?
      
if (!isset($pg)) 
$pg 0// $pg es la pagina actual 
$cantidad=5// cantidad de resultados por página 
$inicial $pg $cantidad;                                                         
                                                                                      
$pegar "SELECT banda, lugar, integrantes, genero, contacto, web, imagen FROM bandas WHERE (banda <= '999999999' ) ORDER BY banda ASC LIMIT $inicial,$cantidad"

$cad mysql_query($pegar) or die (mysql_error()); 

       
$consulta "SELECT banda, lugar, integrantes, genero, contacto, web, imagen FROM bandas WHERE (banda <= '999999999' ) ORDER BY banda ASC"

$contarok mysql_query($consulta);

$total_records=mysql_num_rows($contarok); 
$pages intval($total_records $cantidad); ?>
              <select name="menu1" onChange="MM_jumpMenu('parent',this,0)">
           
          
            <?      
if ($pg <> 0

$url $pg 1
?><option value="bandas5.php?pg=<? echo $url?>">Anterior</option>
            
            <? 

else { 
?>
            <? 


for (
$i 0$i<($pages 1); $i++) { 
if (
$i == $pg) { ?><option selected><? echo $i?></option>
            
            <? 

else { 
?><option value="bandas5.php?pg=<? echo $i?>"><? echo $i?></option>
            <? 



if (
$pg $pages) { 
$url $pg 1
?><option value="bandas5.php?pg=<? echo $url?>">Siguiente</option>
             <? 

else { 
?>
           <? 

?>
          </select>
            </td>
          </form>
          
          
          <? while($filabandas mysql_fetch_array($cad)) { ?>
          
                     <p class="verde"><em><? echo $filabandas['banda']; ?></em></p>
           <? echo $filabandas['lugar']; ?><br>
           <? echo $filabandas['integrantes']; ?><br>
           <? echo $filabandas['genero']; ?><br>
           <? echo $filabandas['contacto']; ?><br>
           <a href="<? echo $fila['web']; ?>" target="_blank"><? echo $filabandas['web']; ?></a>
           <br>
<? IF ($filabandas['imagen']=="") { ?> <? } ELSE { ?><img src="../imagenjpeg.php?ruta=<? echo $filabandas['imagen']; ?>&ancho=200&alto=150" width="200" height="150" border="0"><? ?>           
           
           <?  ?>


Creo que tengo que utilizar htmlentities, pero como lo utilizo en este caso???. O si bien puedo ponerlo de otra manera en alguna otra parte de mi pagina. Disculpen si me extendí mucho muchas gracias de antemano por la ayuda, jejeje saludos

Última edición por chicamala_; 04/04/2004 a las 06:19
  #2 (permalink)  
Antiguo 04/04/2004, 05:43
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 15 años, 10 meses
Puntos: 1
A ver, casi que no te entendi nada.
Queres convertir los carateres especiales a html?
Para eso está htmlspecialchars() y/o htmlentities().
  #3 (permalink)  
Antiguo 04/04/2004, 06:14
 
Fecha de Ingreso: abril-2004
Ubicación: Veracruz, Veracruz
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
ouuu

Estuve buscando y no sabia que onda de que se trataba. mmm no quiero sustituir ninguna palabra en especial, si no solo las vocales acentuadas y las eñes por sus respectivos valores en html para que sean visualizados bien en el resultado de la pagina. Bueno por lo que veo se trata de htmlentities, o eso creo...

he encontrado muchosssss codigos pero realmente no se cual utilizar o como.

me dicen que despues tengo que marcar el texto que quiero que sea afectado con un echo pero donde lo pongo y como lo pongo, estoy perdida , pues todo viene de mi tabla en la base de datos

lo quisiera poner en la cabecera de mi página (mi conexion) para que pueda afectar todo mi sitio, de que manera lo pongo. bueno son solo sugerencias

Disculpa, encontré éste código, pero no se como usarlo o si podría usar otro.


<? function myhtmlentities($str) {

$tbl=get_html_translation_table(HTML_ENTITIES);

unset ($tbl["<"]);
unset ($tbl[">"]);
unset ($tbl["'"]);
unset ($tbl['"']);

$tbl["“"]="&quot;";
$tbl["”"]="&quot;";
$tbl["…"]="...";
$tbl["—"]="-";
$tbl["»"]="&raquo;";
$tbl["«"]="&laquo;";

return str_replace(array_keys($tbl),array_values($tbl),$s tr);

}

?>

Última edición por chicamala_; 04/04/2004 a las 06:43
  #4 (permalink)  
Antiguo 04/04/2004, 10:06
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Debido a que todo viene de tu tabla en la base de datos pues entonces estará almacenado el texto en un array del tipo $row[campo]; (no se si dominas bien SQL). Entonces... hacemos algo asi:

Código PHP:
//Probemos con este texto que contiene acentos
$text="VENDO MUSTANG 69’ FASTBACK EN PERFECTO ESTADO
Mustang Mach I (1969) - Fast back importado de USA. En perfecto estado de restauración y conservación. Motor de alto rendimiento, 351 pulgadas cúbicas, 300 HP, 8 cilindros en V, caja de 4 velocidades. Suspensión Heavy Duty. Rines de aluminio, instrumentación completa, incluyendo tacómetro original e indicadores de presión de aceite y temperatura de agua. Dirección hidráulica y vidrios eléctricos. Reproductor Pioneer R/Rep, tengo el radio original PHILCO Ford si lo desea. Lo entrego con algunos repuestos y manuales originales de servicio. Posee sus alfombras originales Mustang. Es un clásico para amantes de carros especiales.
"
;
$mod=htmlentities($text);
echo 
$mod
Lógicamente cuando haces el echo() te muestra las vocales acentuadas en su equivalente en HTML. Pero en tu caso, como viene de una BD, haces algo asi:

Código PHP:
$mod=htmlentities($row[campo]);
echo 
$mod
No le veo mayor complicación. Simplemente debes pasar por la función htmlentities() el valor que viene de tu BD.

Saludos.
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #5 (permalink)  
Antiguo 05/04/2004, 06:48
 
Fecha de Ingreso: abril-2004
Ubicación: Veracruz, Veracruz
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
listo!!!!!!!

jejejeje muchas gracias drcyber por la ayuda, no sabía en realidad como aplicar esa funcion a mis echos, pues soy mas bien bastante novata, pero pues si le sirve a alguien ésto fue lo que resultó al final de los males...

este es mi código para htmlentities, que por lo que entendí tiene por función pasar tal y como está escrito el texto contenido en los campos de una tabla de base de datos, es decir sin respetar ningún tipo de código o etiqueta html contenido en los campos y haciendo más facil la captura de textos que no necesiten mucha edición o formato (o bueno cuando menos eso es lo que veo... )

éste es el código:

<? }
function texto ($text)
{
$text = htmlentities($text);
return $text; }
?>

(que coloqué en la cabecera/ conexion de mi página para que en cualquier momento si lo necesitaba afectara lo que yo marcara para que fuese afectado, sin necesidad de volver a colocar el código de nueva cuenta)


como dijiste solo tengo que agregar en este caso texto( después del echo y luego cerrar el parentesis ) antes del punto y coma

<? echo texto ($fila_fechas['evento']); ?>

está chido pero creo que es algo contraproducente cuando tienes que dar formato a un artículo, por ejemplo, que necesite saltos de linea, bolds y todo eso.

Podría alguien decirme de que manera podría elegir solamente lo que quiero que cambie, por ejemplo en mi caso solo quiero las vocales acentuadas, vocales con dieresis y las eñes, y así poder conservar el uso de las etiquetas de html.

á, ä, ü, Á, ñ, Ñ, como ejemplo.

Muchas gracias de antemano por su respuesta y disculpen si alargo este tema jejeje.
saludos y gracias !!

Última edición por chicamala_; 05/04/2004 a las 06:51
  #6 (permalink)  
Antiguo 05/04/2004, 07:43
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 15 años, 10 meses
Puntos: 1
Podes usar ereg_replace() o alguna otra función similar.
Revisa el manual y busca en google sobre el uso de expresiones regulares.
Saludos
  #7 (permalink)  
Antiguo 05/04/2004, 17:34
 
Fecha de Ingreso: abril-2004
Ubicación: Veracruz, Veracruz
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
Gracias Dj
  #8 (permalink)  
Antiguo 05/04/2004, 18:33
 
Fecha de Ingreso: abril-2004
Ubicación: Veracruz, Veracruz
Mensajes: 7
Antigüedad: 13 años, 8 meses
Puntos: 0
:((((

Me había propuesto dejar de molestar a mi amigo cristhian para estas cosas del php pero le sigo dando lata y ahora les doy lata a ustedes y pues la mera verdad solo se crear tablas y campos en mysql, y por lo que he leido en mis muy pocos y miseros dias de practica y aprendisaje, se que son los arrays y apenas sé que son los strings!!!!, se que me pongo como si supiera mucho, pero pues mas bien e hecho algunas cosas en mi sitio observando lo que hizo mi amigo,,,, pero la verdad es que creo que me estoy volviendo locaaaaaaa con todo esto

encontre esto:

Código PHP:
<?
$name 
ereg_replace"'á""á"$name );
     
$name ereg_replace"é"", "é", $name );
     $name = ereg_replace( "
ñ", "ñ", $name );
?>
me sirve????? o alguien me podría poner un ejemplo de como lo haría, bueno me imagino que ahí en el echo le tengo que poner ereg_replace() o no????

muchas gracias de antemano por su respuesta
  #9 (permalink)  
Antiguo 09/04/2004, 09:51
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 15 años, 4 meses
Puntos: 2
Puedes crear una función asi:

Código PHP:
function remplazar($mensaje

$mensaje str_replace("á","&aacute;",$mensaje); 
$mensaje str_replace("é","&eacute;",$mensaje); 
$mensaje str_replace("í","&iacute;",$mensaje); 
$mensaje str_replace("ó","&oacute;",$mensaje); 
$mensaje str_replace("ú","&uacute;",$mensaje); 
$mensaje str_replace("ñ","&ntilde;",$mensaje); 
return 
$mensaje

y luego se la aplicas a la variable que quieras parsear asi:

Código PHP:
remplazar($variable); 
Saludos!
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #10 (permalink)  
Antiguo 26/05/2005, 11:16
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 640
Antigüedad: 14 años, 2 meses
Puntos: 2
problemas con acentos en Mozilla

hola foro!!!

En IE mi portal se ve bien, pero con Mozilla las letras acentuadas y las ñ salen como "?" he añadido htmlentities() a las variables que contienen el texto a mostrar, pero los "<br />" que están insertados me los muestra como tal... bamos que no hace el salto de línea si no que aparece "<br /> al final de cada párrafo o renglón... cómo lo puedo solucionar??

Muchas gracias!!!

P.D.: he buscado en el foro pero no he tenido suerte en ello...
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:00.