Ayuda con StringRegExp en una web
Publicado: 13 Nov 2011, 12:50
Hola a todos,
Como verán, esta función siempre se me resiste ya que no comprendo del todo su funcionamiento, sé que la función extrae los valores asociados entre dos parámetros, pero no entiendo del todo cuando usar los (.*?) y demás cosas que cita la ayuda..
El problema que tengo, es que al sacar los enlaces de una página web cuya estructura es muy simple:
<li ><a title="Escuchar Same in the end - sublime" href="listen/1f743df/same-in-the-end-sublime"><span class="song">Same in the end</span> - <span class="group">sublime</span></a><a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick="window.open('http://www.goear.com/listen_popup.php?v ... izable=yes')" href="javascript:void(0);"><img alt="Play" src="http://www.goear.com/lib/img/popup.png" /></a><p class="comment">sublime - same in the end</p><span class="length">2:37</span></li>
La estructura se repite para cada canción así que es relativamente facil obtener resultados:
$artistacancion = StringRegExp($html, '<span class="group">(.*?)</span>', 3)
$TituloCancion = StringRegExp($html, '<span class="song">(.*?)</span>', 3)
$linkCancion = StringRegExp($html, '<a title="(.*?)" href="(.*?)"><span class="song">', 3)
Esas son mis tres variables, de las cuales la primera y la segunda funcionan de lujo, el problema está en el link, SOLO necesito asociar la parte del href despreciando así el valor contenido en title se desprecia, he probado a poner solo href="(.*?)"><span class="song">', 3) pero se lia bastante el código...
otra cosa que se me ocurrió fué
If StringLeft($linkCancion[$n], 7) <> "listen/" Then
$link = $linkCancion[$n + 1]
EndIf
pero es una chapuza que repite los links dobles y da un resultado erróneo...
Ayuda porfavor
Gracias!
Saludos!
Como verán, esta función siempre se me resiste ya que no comprendo del todo su funcionamiento, sé que la función extrae los valores asociados entre dos parámetros, pero no entiendo del todo cuando usar los (.*?) y demás cosas que cita la ayuda..
El problema que tengo, es que al sacar los enlaces de una página web cuya estructura es muy simple:
<li ><a title="Escuchar Same in the end - sublime" href="listen/1f743df/same-in-the-end-sublime"><span class="song">Same in the end</span> - <span class="group">sublime</span></a><a class="play" lang="en" xml:lang="en" title="Escuchar en una ventana independiente" onclick="window.open('http://www.goear.com/listen_popup.php?v ... izable=yes')" href="javascript:void(0);"><img alt="Play" src="http://www.goear.com/lib/img/popup.png" /></a><p class="comment">sublime - same in the end</p><span class="length">2:37</span></li>
La estructura se repite para cada canción así que es relativamente facil obtener resultados:
$artistacancion = StringRegExp($html, '<span class="group">(.*?)</span>', 3)
$TituloCancion = StringRegExp($html, '<span class="song">(.*?)</span>', 3)
$linkCancion = StringRegExp($html, '<a title="(.*?)" href="(.*?)"><span class="song">', 3)
Esas son mis tres variables, de las cuales la primera y la segunda funcionan de lujo, el problema está en el link, SOLO necesito asociar la parte del href despreciando así el valor contenido en title se desprecia, he probado a poner solo href="(.*?)"><span class="song">', 3) pero se lia bastante el código...
otra cosa que se me ocurrió fué
If StringLeft($linkCancion[$n], 7) <> "listen/" Then
$link = $linkCancion[$n + 1]
EndIf
pero es una chapuza que repite los links dobles y da un resultado erróneo...
Ayuda porfavor
Gracias!
Saludos!