Ver Mensaje Individual
  #33 (permalink)  
Antiguo 03/10/2013, 02:26
JUMASOL
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años, 4 meses
Puntos: 8
Respuesta: detectar link en página

Tengo que confirmarte que este nuevo script sí funciona perfectamente. Así que es el que voy a utilizar.

Tendría que dar por solucionado el tema, pero me surje una duda en cuanto a su puesta en práctica.

Sí tenemos que identificar un link e insertar un css, no hay problema:

Código:
<?php
$DomDocument = new DOMDocument();
$DomDocument->preserveWhiteSpace = false;
$DomDocument->load('http://www. el sitio .com/index.php?option=com_xmap&view=xml&tmpl=component&id=1');
$DomNodeList = $DomDocument->getElementsByTagName('loc');

foreach($DomNodeList as $url) {
$urls[] = $url->nodeValue;
}
if(in_array("http://www. el sitio .com/enlace-a",$urls)){
$css= '<link href="/css/enlace-a.css" rel="stylesheet" type="text/css" />';
}
echo $css;
?>
Pero si intentas utilizar varias instancias para insertar distintos estilos para cada enlace en caso de existir éste me encuentro con que no funciona para más de dos.

Así, si intentas detectar los enlaces "enlace-a" y "enlace-b", que efectivamente están en la ruta indicada, funciona correctamente e inserta los dos enlaces a enlace-a.css y enlace-b.css respectivamente:

Código:
<?php
$DomDocument = new DOMDocument();
$DomDocument->preserveWhiteSpace = false;
$DomDocument->load('http://www. el sitio .com/index.php?option=com_xmap&view=xml&tmpl=component&id=1');
$DomNodeList = $DomDocument->getElementsByTagName('loc');

foreach($DomNodeList as $url) {
$urls[] = $url->nodeValue;
}
if(in_array("http://www. el sitio .com/enlace-a",$urls)){
$css= '<link href="/css/enlace-a.css" rel="stylesheet" type="text/css" />';
}
if(in_array("http://www. el sitio .com/enlace-b",$urls)){
$css= '<link href="/css/enlace-b.css" rel="stylesheet" type="text/css" />';
}
echo $css;
?>
Pero si intentas añadir un tercer elemento, sólo funciona para el primero y el último. En el caso siguiente, sólo funciona para "enlace-a" y "enlace-c".

Código:
<?php
$DomDocument = new DOMDocument();
$DomDocument->preserveWhiteSpace = false;
$DomDocument->load('http://www. el sitio .com/index.php?option=com_xmap&view=xml&tmpl=component&id=1');
$DomNodeList = $DomDocument->getElementsByTagName('loc');

foreach($DomNodeList as $url) {
$urls[] = $url->nodeValue;
}
if(in_array("http://www. el sitio .com/enlace-a",$urls)){
$css= '<link href="/css/enlace-a.css" rel="stylesheet" type="text/css" />';
}
if(in_array("http://www. el sitio .com/enlace-b",$urls)){
$css= '<link href="/css/enlace-b.css" rel="stylesheet" type="text/css" />';
}
if(in_array("http://www. el sitio .com/enlace-c",$urls)){
$css= '<link href="/css/enlace-c.css" rel="stylesheet" type="text/css" />';
}
echo $css;
?>
Lo mismo se produce si añades 10 enlaces, donde sólo funciona para el primero y el décimo.

No entiendo por qué ni de dónde deriva tal limitación.