Hola,
Estoy trabajando en una web de temática de adultos y tengo un problemas con las entidades.
Como podéis comprobar si introducís la URL http://www.escortsindex.net en el validador de W3C da 23 errores relacionados con el uso de "&". Como solución me propone usar el código & dónde se genere una URL dinámica. Bien, en el código siempre tengo & dónde hay una URL.
El problema está, creo, en cómo tengo maquetada la web. El menú de navegación lo tengo en un archivo independiente (menu.php) al que llamo en todas las páginas mediante un require 'menu.php'; excepto en el index. Creo que al llamarlo me convierte los & en &. El menú en sí mismo hace referencia a contenido dinámico. Abajo incluyo el codigo del archivo menu.php
Código:
if($_tbl){
$countries = (array)$sql->get_rows('country.id,country.title_'.$_language.' as title, count('.$_tbl.'.id) as
entries','country left join '.$_tbl.' on '.$_tbl.'.country_id=country.id',$_sql_expr.'group by country.id order by
title');
$regions = array();
$sql->select('region.id,region.title_'.$_language.' as title,region.country_id, count('.$_tbl.'.id) as entries','region
left join '.$_tbl.' on '.$_tbl.'.region_id=region.id',$_sql_expr.'group by region.id order by region.country_id,title');
while($data=$sql->fetch()){
$regions[$data['country_id']][] = array('id'=>$data['id'],'title'=>$data['title'],'entries'=>$data['entries']);
}
$cities = array();
$sql->select('city.id,city.title_'.$_language.' as title,city.region_id, count('.$_tbl.'.id) as entries','city left join
'.$_tbl.' on '.$_tbl.'.city_id=city.id',$_sql_expr.'group by city.id order by city.region_id,title');
while($data=$sql->fetch()){
$cities[$data['region_id']][] = array('id'=>$data['id'],'title'=>$data['title'],'entries'=>$data['entries']);
}
$str = '<ul class="country _c_r_c">';
foreach($countries as $country_data){
if(!$country_data['entries']) continue;
$str .= '<li><a'.(($_country==$country_data['id'])?' class="active"':'').' href="?language='.
$language.'&country='.$country_data['id'].$_serv_links.'">'.$country_data['title'].' ('.$country_data['entries'].')
</a>';
if(isset($regions[$country_data['id']])){
$str .= '<ul class="_c_r_c region'.(($_country==$country_data['id'])?' open':'').'">';
foreach($regions[$country_data['id']] as $region_data){
if(!$region_data['entries']) continue;
$str .= '<li><a'.(($_region==$region_data['id'])?' class="active"':'').' href="?language='.
$language.'&country='.$country_data['id'].'&region='.$region_data['id'].$_serv_links.'">'.$region_data['title'].'
('.$region_data['entries'].')</a>';
if(isset($cities[$region_data['id']])){
$str .= '<ul class="_c_r_c city'.(($_region==$region_data['id'])?' open':'').'">';
foreach($cities[$region_data['id']] as $city_data){
if(!$city_data['entries']) continue;
$str .= '<li><a'.(($_city==$city_data['id'])?' class="active"':'').' href="?language='.
$language.'&country='.$country_data['id'].'&region='.$region_data['id'].'&city='.
$city_data['id'].$_serv_links.'">'.$city_data['title'].' ('.$city_data['entries'].')</a></li>';
}
$str .= '</ul>';
}
$str .= '</li>';
}
$str .= '</ul>';
}
$str .= '</li>';
}
$str .= '</ul>';
}
No sé cómo solucionas este problema y agradecería cualquier ayuda.
También tengo otro problema recoger URLs en la base de datos. Tengo la siguiente función:
Código:
function url($name){
if(!isset($_GET[$name]))
return '';
return preg_replace('/[^a-z0-9._-]/','',$_GET[$name]);
}
Con ella recogo Todas las URL siempre que no sean de segundo nivel. He intentado introducir "/" para recoge segundos y sucesivos niveles pero no lo consigo. Alguna sugerencia?
Muchas gracias.