Foros del Web » Programando para Internet » PHP »

¿Como extraer un enlace? con exp regulares?

Estas en el tema de ¿Como extraer un enlace? con exp regulares? en el foro de PHP en Foros del Web. Necesito sacar enlaces de un contenido. Yo se como deben comenzar esos enlaces y lo unico que nesecito es que en una parte del enlace ...
  #1 (permalink)  
Antiguo 06/10/2011, 16:10
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 13 años, 2 meses
Puntos: 48
¿Como extraer un enlace? con exp regulares?

Necesito sacar enlaces de un contenido.
Yo se como deben comenzar esos enlaces y lo unico que nesecito es que en una parte del enlace coincidenas todos los caracteres excepto el espacio y un <

Este es mi codigo:
Código PHP:
Ver original
  1. preg_match_all('/http:\/\/ejemplo.com\/(.*?<)/i',$contenido, $coincidencias,PREG_PATTERN_ORDER);

ese codigo funciona casi bien. el problema esta en que me trae todo el enlace incluyendo < y yo no quiero que me lo incluya.

ejemplo:
$contenido= 'bla bla bla http://ejemplo.com/ID0193741ASDER<b>hola</b>';
y lo que ahora me esta entregando es esto:
http://ejemplo.com/ID0193741ASDER<
y yo quiero esto:
http://ejemplo.com/ID0193741ASDER

Gracias de anticipado
  #2 (permalink)  
Antiguo 06/10/2011, 16:16
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: ¿Como extraer un enlace? con exp regulares?

¿Qué tal así?

/http:\/\/ejemplo.com\/(.*?)[<|\s+]/

Que se traduciría como: Capturar lo que esté entre http://ejemplo.com/ y < ó espacio 1+ veces

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 06/10/2011, 16:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: ¿Como extraer un enlace? con exp regulares?

Yo lo haría así:

Código PHP:
Ver original
  1. <?php
  2. $str = 'bla bla bla http://ejemplo.com/ID0193741ASDER<b>hola</b>';
  3. preg_match('@http://ejemplo.com/([^<|\s|/]+.*?)@i', $str, $m);
  4. echo $m[0];

Usa preg_match_all o preg_match según las necesidades.

Sourcegeek tu resultado es:

Array
(
[0] => Array
(
[0] => http://ejemplo.com/ID0193741ASDER<
)

[1] => Array
(
[0] => ID0193741ASDER
)

)

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 06/10/2011 a las 16:48 Razón: Me tragué un más ;) ya está
  #4 (permalink)  
Antiguo 06/10/2011, 19:12
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 13 años, 2 meses
Puntos: 48
Respuesta: ¿Como extraer un enlace? con exp regulares?

Muchas gracias a ambos.
Efectivamente el codigo de sourcegeek devuelve http://ejemplo.com/ID0193741ASDER< .
Andresdzphp tu código me anduvo a la perfeción muchas gracias y te devo una xD.

Etiquetas: enlace, exp
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 13:25.