Foros del Web » Programando para Internet » PHP »

Quitar acentos ¿Como?

Estas en el tema de Quitar acentos ¿Como? en el foro de PHP en Foros del Web. Hola. Soy nueva en el foro y tengo una duda. Resulta que tengo un script que muestra los ultimos post (los titulos de los topics) ...
  #1 (permalink)  
Antiguo 02/02/2009, 22:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 4
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Quitar acentos ¿Como?

Hola. Soy nueva en el foro y tengo una duda.
Resulta que tengo un script que muestra los ultimos post (los titulos de los topics) de un foro, sin embargo yo quiero que los titulos salgan sin acentos (tildes). Acá el codigo.

Código PHP:
<?php 



/* This script shows the last X numbers of posts (titles) posted last on a non-VB page.
You may customize it in any way you wish. If you have any problems with it, you can
post them at vB.org or send me an email to [email protected].

Enjoy!
*/


## CUSTOMIZE SETTINGS FOR YOUR SITE ##
$db_host "localhost"// Change this if your MySQL database host is different.
$db_name "asdas"// Change this to the name of your database.
$db_user "asdasda"// Change this to your database username.
$db_pw "asdasda"// Change this to your database password.


## CUSTOMIZE SETTINGS FOR YOUR SITE ##
$forum_url "http://asdasd"// Change this to reflect to your forum's URL.
$forum_id ""// If you wish to display the posts from a specific forum, enter the forum id here. Otherwise, leave it blank.
$limit "20"// Number of posts displayed.
$titlecolor "#0000FF"// This is the color of the title.
$postedcolor "#404040"// This is the color of the bottom text.
$txtlimit "100"// This is the character limit.
#######################################

// Connecting to your database

mysql_connect($db_host$db_user$db_pw
OR die (
"Cannot connect to your database"); 
mysql_select_db($db_name) OR die("Cannot connect to your database"); 

// Below is the beginning of a table. If you feel you don't need it, you may remove it.
echo "<table width=\"450\" border=\"0\">";

if (
$forum_id) {
    
$forumid "AND forumid=$forum_id";
}

if (
$limit) {
    
$limited "LIMIT $limit";
}
$thread_sql mysql_query("SELECT threadid,title,lastpost,lastposter,replycount,views FROM thread WHERE visible=1 AND open=1 $forumid ORDER BY lastpost DESC $limited");
while(
$thread_get=mysql_fetch_array($thread_sql))
{
$lastpost $thread_get['lastpost'];
$poster $thread_get['lastposter'];
$tid $thread_get['threadid'];
$reply $thread_get['replycount'];
$psql mysql_query("SELECT postid FROM post WHERE threadid=$tid ORDER BY postid DESC");
$getp=mysql_fetch_array($psql);
$pid $getp['postid'];
$date2 date ("m/d/y h:i A" ,$lastpost);
$title $thread_get['title'];
$title substr($title,0,$txtlimit);
echo 
"  <tr>
    <td><a href=\"$forum_url/showthread.php?t=$tid\">$title</a></td>
    <td>$poster</td>
    <td>$reply</td>
  </tr>
"
;
}
echo 
"</table>";

?>
Se supone que ahi, lo que recoge los titulos de los post es $title, y eso necesito que no tenga acentos.

Me encontré con una solución que seria esta:

Código PHP:
function limpiar_acentos($s)
{
$s ereg_replace(&#8221;[áàâãª]”,”a”,$s);
$s ereg_replace(&#8221;[ÁÀÂÃ]”,”A”,$s);
$s ereg_replace(&#8221;[ÍÌÎ]”,”I”,$s);
$s ereg_replace(&#8221;[íìî]”,”i”,$s);
$s ereg_replace(&#8221;[éèê]”,”e”,$s);
$s ereg_replace(&#8221;[ÉÈÊ]”,”E”,$s);
$s ereg_replace(&#8221;[óòôõº]”,”o”,$s);
$s ereg_replace(&#8221;[ÓÒÔÕ]”,”O”,$s);
$s ereg_replace(&#8221;[úùû]”,”u”,$s);
$s ereg_replace(&#8221;[ÚÙÛ]”,”U”,$s);
$s str_replace(&#8221;ç”,”c”,$s);
$s str_replace(&#8221;Ç”,”C”,$s);
$s str_replace(&#8221;[ñ]”,”n”,$s);
$s str_replace(&#8221;[Ñ]”,”N”,$s);

return $s;

Sin embargo no sé como aplicarla al Script que les mostré al comienzo.

Gracias :D
  #2 (permalink)  
Antiguo 02/02/2009, 22:48
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Quitar acentos ¿Como?

Incluye la funcion limpiar_acentos en tu script y llamala pasandole como parametro tu variable $title (claro, despues de que ya tenga el valor que sacas de tu BD)
  #3 (permalink)  
Antiguo 02/02/2009, 23:19
 
Fecha de Ingreso: febrero-2009
Mensajes: 4
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Quitar acentos ¿Como?

Gracias por la respuesta. Entiendo un poco, es que lo que pasa es que soy muy novato, muy ignorante.

Código PHP:
<?php 



/* This script shows the last X numbers of posts (titles) posted last on a non-VB page.
You may customize it in any way you wish. If you have any problems with it, you can
post them at vB.org or send me an email to [email protected].

Enjoy!
*/


## CUSTOMIZE SETTINGS FOR YOUR SITE ##
$db_host "localhost"// Change this if your MySQL database host is different.
$db_name "asdas"// Change this to the name of your database.
$db_user "asdasda"// Change this to your database username.
$db_pw "asdasda"// Change this to your database password.


## CUSTOMIZE SETTINGS FOR YOUR SITE ##
$forum_url "http://asdasd"// Change this to reflect to your forum's URL.
$forum_id ""// If you wish to display the posts from a specific forum, enter the forum id here. Otherwise, leave it blank.
$limit "20"// Number of posts displayed.
$titlecolor "#0000FF"// This is the color of the title.
$postedcolor "#404040"// This is the color of the bottom text.
$txtlimit "100"// This is the character limit.
#######################################

// Connecting to your database

function limpiar_acentos($s)
{
$s ereg_replace("[áàâãª]","a",$s);
$s ereg_replace("[ÁÀÂÃ]","A",$s);
$s ereg_replace("[ÍÌÎ]","I",$s);
$s ereg_replace("[íìî]","i",$s);
$s ereg_replace("[éèê]","e",$s);
$s ereg_replace("[ÉÈÊ]","E",$s);
$s ereg_replace("[óòôõº]","o",$s);
$s ereg_replace("[ÓÒÔÕ]","O",$s);
$s ereg_replace("[úùû]","u",$s);
$s ereg_replace("[ÚÙÛ]","U",$s);
$s str_replace("ç","c",$s);
$s str_replace("Ç","C",$s);
$s str_replace("[ñ]","n",$s);
$s str_replace("[Ñ]","N",$s);

return 
$s;
}
mysql_connect($db_host$db_user$db_pw
OR die (
"Cannot connect to your database"); 
mysql_select_db($db_name) OR die("Cannot connect to your database"); 

// Below is the beginning of a table. If you feel you don't need it, you may remove it.
echo "<table width=\"450\" border=\"0\">";

if (
$forum_id) {
    
$forumid "AND forumid=$forum_id";
}

if (
$limit) {
    
$limited "LIMIT $limit";
}
$thread_sql mysql_query("SELECT threadid,title,lastpost,lastposter,replycount,views FROM thread WHERE visible=1 AND open=1 $forumid ORDER BY lastpost DESC $limited");
while(
$thread_get=mysql_fetch_array($thread_sql))
{
$lastpost $thread_get['lastpost'];
$poster $thread_get['lastposter'];
$tid $thread_get['threadid'];
$reply $thread_get['replycount'];
$psql mysql_query("SELECT postid FROM post WHERE threadid=$tid ORDER BY postid DESC");
$getp=mysql_fetch_array($psql);
$pid $getp['postid'];
$date2 date ("m/d/y h:i A" ,$lastpost);
$title $thread_get['title'];
$title substr($title,0,$txtlimit);
echo 
"  <tr>
    <td><a href=\"$forum_url/showthread.php?t=$tid\">$title</a></td>
    <td>$poster</td>
    <td>$reply</td>
  </tr>
"
;
}
echo 
"</table>";

?>
Así?. Ahi ya la inserté. Pero ahora, como la hago funcionar :(?

Última edición por Adominapas; 02/02/2009 a las 23:32
  #4 (permalink)  
Antiguo 03/02/2009, 00:23
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: Quitar acentos ¿Como?

Hola,
Prueba haci:
Código PHP:
<?php 



/* This script shows the last X numbers of posts (titles) posted last on a non-VB page.
You may customize it in any way you wish. If you have any problems with it, you can
post them at vB.org or send me an email to [email protected].

Enjoy!
*/


## CUSTOMIZE SETTINGS FOR YOUR SITE ##
$db_host "localhost"// Change this if your MySQL database host is different.
$db_name "asdas"// Change this to the name of your database.
$db_user "asdasda"// Change this to your database username.
$db_pw "asdasda"// Change this to your database password.


## CUSTOMIZE SETTINGS FOR YOUR SITE ##
$forum_url "http://asdasd"// Change this to reflect to your forum's URL.
$forum_id ""// If you wish to display the posts from a specific forum, enter the forum id here. Otherwise, leave it blank.
$limit "20"// Number of posts displayed.
$titlecolor "#0000FF"// This is the color of the title.
$postedcolor "#404040"// This is the color of the bottom text.
$txtlimit "100"// This is the character limit.
#######################################

// Connecting to your database

function limpiar_acentos($s)
{
$s ereg_replace("[áàâãª]","a",$s);
$s ereg_replace("[ÁÀÂÃ]","A",$s);
$s ereg_replace("[ÍÌÎ]","I",$s);
$s ereg_replace("[íìî]","i",$s);
$s ereg_replace("[éèê]","e",$s);
$s ereg_replace("[ÉÈÊ]","E",$s);
$s ereg_replace("[óòôõº]","o",$s);
$s ereg_replace("[ÓÒÔÕ]","O",$s);
$s ereg_replace("[úùû]","u",$s);
$s ereg_replace("[ÚÙÛ]","U",$s);
$s str_replace("ç","c",$s);
$s str_replace("Ç","C",$s);
$s str_replace("[ñ]","n",$s);
$s str_replace("[Ñ]","N",$s);

return 
$s;
}
mysql_connect($db_host$db_user$db_pw
OR die (
"Cannot connect to your database"); 
mysql_select_db($db_name) OR die("Cannot connect to your database"); 

// Below is the beginning of a table. If you feel you don't need it, you may remove it.
echo "<table width=\"450\" border=\"0\">";

if (
$forum_id) {
    
$forumid "AND forumid=$forum_id";
}

if (
$limit) {
    
$limited "LIMIT $limit";
}
$thread_sql mysql_query("SELECT threadid,title,lastpost,lastposter,replycount,views FROM thread WHERE visible=1 AND open=1 $forumid ORDER BY lastpost DESC $limited");
while(
$thread_get=mysql_fetch_array($thread_sql))
{
$lastpost $thread_get['lastpost'];
$poster $thread_get['lastposter'];
$tid $thread_get['threadid'];
$reply $thread_get['replycount'];
$psql mysql_query("SELECT postid FROM post WHERE threadid=$tid ORDER BY postid DESC");
$getp=mysql_fetch_array($psql);
$pid $getp['postid'];
$date2 date ("m/d/y h:i A" ,$lastpost);
$title $thread_get['title'];
$title substr($title,0,$txtlimit);
$title limpiar_acentos($title);
echo 
"  <tr>
    <td><a href=\"$forum_url/showthread.php?t=$tid\">$title</a></td>
    <td>$poster</td>
    <td>$reply</td>
  </tr>
"
;
}
echo 
"</table>";

?>
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #5 (permalink)  
Antiguo 03/02/2009, 04:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Quitar acentos ¿Como?

este otro método es infalible, o al menos para mi....

Código PHP:
<?php


/**
 * (cadena)
 *
 * Elimina los acentos de la cadena, naturalmente.
 */
function unacent($text)
{
    static 
$test = array();
    if (empty(
$test))
    {
        
$html // Obtenemos la tabla
            
get_html_translation_table(HTML_ENTITIES);

        foreach (
$html as $char => $ord)
        {
            if (
ord($char) >= 192)
            {
                
$test[$char] = $ord[1];
            }
        }
    } 
// Hacemos los cambios de acentos...
    
$text strtr($text$test);
    return 
$text;
}


echo 
unacent('el avión voló sobre el camión');

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 03/02/2009, 11:49
 
Fecha de Ingreso: febrero-2009
Mensajes: 4
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Quitar acentos ¿Como?

Muchisimas Gracias Chicos, se pasaron!. Me sirvió!!
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




La zona horaria es GMT -6. Ahora son las 11:34.