Foros del Web » Programando para Internet » Javascript »

Cómo extraigo de una cadena una URL

Estas en el tema de Cómo extraigo de una cadena una URL en el foro de Javascript en Foros del Web. Lo que quiero hacer es una función que reciba como parámetro una cadena, entonces se buscará si en ella existe alguna imagen... y sí la ...
  #1 (permalink)  
Antiguo 12/08/2012, 13:29
dalfeju
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Cómo extraigo de una cadena una URL

Lo que quiero hacer es una función que reciba como parámetro una cadena, entonces se buscará si en ella existe alguna imagen... y sí la hay, retornar su URL.

Supongamos que mandan esta cadena a la función:

Código HTML:
Ver original
  1. Texto de prueba, texto de prueba http://imagen.jpg texto de prueba, texto de prueba.

Cómo saco la URL de esa cadena, es decir esto:

Código HTML:
Ver original
  1. http://imagen.jpg
  #2 (permalink)  
Antiguo 12/08/2012, 18:35
 
Fecha de Ingreso: agosto-2012
Ubicación: Santiago
Mensajes: 124
Antigüedad: 11 años, 8 meses
Puntos: 60
Respuesta: Cómo extraigo de una cadena una URL

con expresiones regulares
__________________
~~Aprendiendo.
Become a Programmer, Moth*rf*cker
  #3 (permalink)  
Antiguo 12/08/2012, 20:23
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Cómo extraigo de una cadena una URL

string="Texto de prueba, texto de prueba http://imagen.jpg texto de prueba, texto de prueba.";
a=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi.exec(string);

alert(a[0])

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #4 (permalink)  
Antiguo 14/08/2012, 01:15
dalfeju
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cómo extraigo de una cadena una URL

Cita:
Iniciado por dontexplain Ver Mensaje
string="Texto de prueba, texto de prueba http://imagen.jpg texto de prueba, texto de prueba.";
a=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi.exec(string);

alert(a[0])

Un saludo.
Gracias ^^
  #5 (permalink)  
Antiguo 14/08/2012, 12:16
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Cómo extraigo de una cadena una URL

Me parece que esa RegExp encuentra cualquier cosa que tenga un punto en el medio.

No estoy muy seguro porque no soy bueno para leer expresiones regulares (y para montones de otras cosas tampoco), pero creo que si aparece en la cadena un "pru.eba" lo toma como imagen.

Lástima que no está viniendo por el Foro IsaBelM, ella está entre los expertos que las ven clarísimas.

A mí se me ocurre que se pueden agregar las extensiones para asegurarnos de que sean imágenes, y eso de por sí ya excluye otras subcadenas que contengan un punto en el medio, porque las probabilidades de que coincidan al final con las letras de una extensión de imagen, sin ser realmente una imagen, son muy pocas.

Código:
var a = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)+\.(jpg|gif|png|bmp)/gi.exec(string);
  #6 (permalink)  
Antiguo 14/08/2012, 14:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Cómo extraigo de una cadena una URL

Primero
http://imagen.jpg
si bien es una url corresponde al domino imagen en el dominio de primer nivel jpg, eso desde ya no existe
Volviendo al tema de las urls...

Esto es casi lo mejor que podés encontrar
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  <head>
  5.   <title>Detección extracción de url's</title>
  6.   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7.   <script type="text/javascript">
  8. //<![CDATA[
  9.  function validar() {
  10.  var cadena = document.getElementById('texto').value;
  11.  var exp_reg  = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?/g;
  12.  var verifica = cadena.match(exp_reg);
  13.  if (verifica !== null){
  14.  document.getElementById('mensaje').innerHTML = "<b>Array de ur'ls detectadas:<\/b><br \/>" + verifica;
  15.  }else {
  16.  document.getElementById('mensaje').innerHTML = "No hay url's";
  17.  return false;
  18.  }
  19.  }
  20.  //]]>
  21.   </script>
  22.  </head>
  23.  <body>
  24.   <form action="#">
  25.    <div>
  26.     <textarea rows="10" cols="100" id="texto">
  27. </textarea><br />
  28.     <input type="button" value="validar" onclick="validar();" /><br />
  29.     <br />
  30.    </div>
  31.   </form>
  32.   <div id="mensaje">
  33.    <!-- mensaje validación -->
  34.   </div>
  35.  </body>
  36. </html>

y digo casi, porque gracias a modRewrite podés hacer cosas como esta
http://mr5.emprear.com/inx.html
En particular el segundo link, en dónde los espacios en blanco no están codificados, demás está decir que esto verifica la sintáxis, sin tener en cuenta si la url es real o no.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 14/08/2012 a las 14:12

Etiquetas: url, cadenas
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:28.