Regexp Perl: Como extraer sólo referencias relativas
En la lista de correo de Php, un amable phpero consulto sobre como extraer sólo links con referencias relativas.
Por lo general, es fácil extraer cosas a través de expresiones regulares, pero evitarlas es más complicado.
Después de darle un buen rato vueltas(media hora para una línea es harto), encontré la solución
preg_match_all( "/(<a.[^>]*href[=\\s]+[\\"'])(?!http|ftp|mailto)([^\\"']*?)[\\"']\\s*>/i",
$texto,$match);
$aReferenciasRelativas=$match[2];
Ufff... El secreto está en (?!http|ftp|mailto), una aserción de perl que indica no extraer el siguiente patrón si se cumple la condición citada. En este caso, que preceda al resto de los caracteres los nombres de los protocolos. Ahora, si se quiere obligar su uso, se puede ocupar (?=http).
Eso por ahora. Espero que les sirva!
- 2146 lecturas

Enviar un comentario nuevo