Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] detectar link en página

Estas en el tema de detectar link en página en el foro de PHP en Foros del Web. Esto: Código: <?php $urls = array(); $DomDocument = new DOMDocument(); $DomDocument->preserveWhiteSpace = false; $DomDocument->load('http://www. sitio .com/index.php?option=com_xmap&view=xml&tmpl=component&id=1'); $DomNodeList = $DomDocument->getElementsByTagName('loc'); foreach($enlace-a as $enlace-a){ if(strpos($url->nodeValue,"http://www.sitio.com/enlace-a")){ $var="aqui guardas ...

  #31 (permalink)  
Antiguo 02/10/2013, 16:33
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 6 meses
Puntos: 8
Respuesta: detectar link en página

Esto:

Código:
  <?php
   $urls = array();  

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

foreach($enlace-a as $enlace-a){
if(strpos($url->nodeValue,"http://www.sitio.com/enlace-a")){
$var="aqui guardas el css";
}
}

//display it
echo "<pre>";
print_r($urls);
echo "</pre>";
  
  
  ?>
Tampoco arroja ningún resultado, apesar de que http://www.sitio.com/enlace-a estaba en el array.

Y digo estaba porque ahora ya no se muestra más que esto:

Array
(
)

No aparece "aqui guardas el css" por ningún sitio.


Un saludo.
  #32 (permalink)  
Antiguo 02/10/2013, 17:39
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 2 meses
Puntos: 96
Respuesta: detectar link en página

Código PHP:
Ver original
  1. $DomDocument = new DOMDocument();
  2. $DomDocument->preserveWhiteSpace = false;
  3. $DomDocument->load('http://www. sitio .com/index.php?option=com_xmap&view=xml&tmpl=component&id=1');
  4. $DomNodeList = $DomDocument->getElementsByTagName('loc');
  5.  
  6. foreach($DomNodeList as $url) {
  7.     $urls[] = $url->nodeValue;
  8. }
  9. if(in_array("http://blablalba",$urls)){
  10. $css= '<link href="/css/xxxxxxxxxxxxxxxxxxx.css" rel="stylesheet" type="text/css" />';
  11. }
  12. echo $css;
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Última edición por xSkArx; 02/10/2013 a las 18:14
  #33 (permalink)  
Antiguo 03/10/2013, 02:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 6 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.

Etiquetas: html, link, página
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




La zona horaria es GMT -6. Ahora son las 22:36.