Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/11/2008, 22:09
aenet
 
Fecha de Ingreso: septiembre-2006
Ubicación: Buenos Aires
Mensajes: 53
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Transformar variable en amigable

Mhh... qué raro, trabajé siempre con funciones y nunca tuve problemas con eso.
¿Estas poniendo la función fuera de todo while o if? para mayor seguridad pone la función al comienzo de la pagina, después del <?php al menos que tengas un session_start() por supuesto, iría después de éste, ja.

Código PHP:
<?php
function url2amigable($entrada){
$ok strtolower(strtr($entrada"áéíóúñÁÉÍÓÚÑ""aeiounaeioun"));
$find = array(' ''&''\r\n''\n''+'); 
$ok str_replace ($find'-'$ok);
$ok=str_replace("-de-""-"$ok);
$ok=str_replace("-del-""-"$ok);
$ok=str_replace("-en-""-"$ok);
$ok=str_replace("-l-""-"$ok);
$ok=str_replace("-y-""-"$ok);
$ok=str_replace("-/-""-"$ok);
$ok=str_replace("/.""."$ok);
$ok=str_replace("--","-",$ok);
return 
$ok;
}
 
$i 0;
$total_subcat intval(mysql_num_rows($subcategorias) / 3);
while(
$row mysql_fetch_row($subcategorias)){
if(
mysql_num_rows($subcategorias) > 2){
if(
$i==0)echo "<td width=240 valign=\"top\">";
echo 
"<a href=\"/$row[2]/".url2amigable($row[0]).".html \" class=\"cat\">$row[0]</a><SPAN class=\"cat-no\">&nbsp;($row[1])</span><br><br>";
if(
$i == $total_subcat ){echo "</td>";$i = -1;}
}else{
echo 
"<td width=240 valign=\"top\">";
echo 
"<a href=\"/$row[2]/".url2amigable($row[0]).".html \" class=\"cat\">$row[0]</a><SPAN class=\"cat-no\">&nbsp;($row[1])</span>";
if(
$i == 2){echo "</tr>";$i = -1;}

$i++;
}
?>
Supongo que con esto debería funcionar, y si no... me deja perplejo.

Otra cosa, generalmente lo que yo hago para transformar el texto en url amigable, si es que en el texto puedan aparecer signos raros aparte de ñ o acentos, como: " ? !%# y cosas así, para hacerla más corta, ya que la lista de signitos es interminable para reemplazarlos uno por uno, solo extraigo lo que sean palabras y números.
Mi función url2amigable() seria así:


Código PHP:
function url2amigable($entrada){
 
$sinegne=strtr($entrada,"áéíóúñÁÉÍÓÚÑ""aeiounaeioun");
       
preg_match_all("/([a-z0-9]+)/i"$sinegne$coincidenciasPREG_SET_ORDER);
   
$theWord="";
       foreach (
$coincidencias as $val) {
      
$theWord.=$val[1]."-";
       }
//end foreach
     
$theWord=preg_replace("/[\-]+/","-",$theWord);
     
$theWords=preg_replace("/-$/","",$theWord);
 return 
$theWords;

__________________
mysql_query("SELECT * FROM Intenet WHERE "Una pagina de verdad" ORDER BY id ASC");