<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://php.apsique.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Php y otras yerbas - Regexp Perl: Como extraer sólo referencias relativas - Comentarios</title>
 <link>http://php.apsique.com/contenido/regexp_perl_extraer_solo_referencias_relativas</link>
 <description>Comentarios para &quot;Regexp Perl: Como extraer sólo referencias relativas&quot;</description>
 <language>es</language>
<item>
 <title>Regexp Perl: Como extraer sólo referencias relativas</title>
 <link>http://php.apsique.com/contenido/regexp_perl_extraer_solo_referencias_relativas</link>
 <description>&lt;p&gt;En la lista de correo de Php, un amable phpero consulto sobre como extraer sólo links con referencias relativas. &lt;br /&gt;
Por lo general, es fácil extraer cosas a través de expresiones regulares, pero evitarlas es más complicado. &lt;br /&gt;
Después de darle &lt;b&gt;un buen rato vueltas&lt;/b&gt;(media hora para una línea es harto), encontré la solución&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
preg_match_all( &quot;/(&amp;lt;a.[^&amp;gt;]*href[=\\s]+[\\&quot;&#039;])(?!http|ftp|mailto)([^\\&quot;&#039;]*?)[\\&quot;&#039;]\\s*&amp;gt;/i&quot;,&lt;br /&gt;
    $texto,$match);&lt;br /&gt;
$aReferenciasRelativas=$match[2];&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Ufff... El secreto está en &lt;b&gt;(?!http|ftp|mailto)&lt;/b&gt;, 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).&lt;br /&gt;
Eso por ahora. Espero que les sirva!&lt;/p&gt;
</description>
 <comments>http://php.apsique.com/contenido/regexp_perl_extraer_solo_referencias_relativas#comments</comments>
 <category domain="http://php.apsique.com/categoria/lenguajes/php_php_retorcido">Php retorcido</category>
 <pubDate>Wed, 15 Oct 2003 15:00:08 -0700</pubDate>
 <dc:creator>clbustos</dc:creator>
 <guid isPermaLink="false">15 at http://php.apsique.com</guid>
</item>
</channel>
</rss>
