Beat: Regulärer Ausdruck will und will nicht passen...

Beitrag lesen

... Probleme gibt es nur bei dem überspringen der "Zwischenstücke".

<h1  id="post-304455"><a href="blub" rel="bookmark" title="Permanent Link to blablub"><font color="black"><b>atom rofl lol</b></font></a> </h1>

<p class="date">Sonntag, 13. Juni 2010 11:07 &nbsp <a href="http://twitter.com/" title="Click to send this page to Twitter!" target="_blank"><img src="http://picload.org/image/rdrclw/twittereus0.jpg" style="border: 0pt none;margin: 0px"></a></p>

<div class="entry"><!-- the entry -->
<p>bla bla bla blub ba dasfja sfweah falkshfailwefh asdfa</p>

<p><img src="http://www.google.com/intl/de_de/lovefootball/doodle4google/img/doodles/9-doodle.jpg" alt="" /><br />
<strong>Dauer: </strong>1 min. | <strong>Format: </strong>DSA | <strong>Größe: </strong>4 MB | <a href="blub.htmö"  target="_blank">blub</a><br />

  
  
Ich schreibe in Perl.  
Das Prinzip zu PHP sollte ähnlich sein.  
Wir verwenden eine Callback-Funktion.  
Zuerst wollen wir einen "Entry" als Einheit erkennen. Dies schicken wir dann an die Callback-Funktion zum weiteren Parsen.  
  
~~~perl
$bad_code =~ $entry_rex and entry_sub_parse(1);  
  
entry_sub_parse{  
  # dies ist eine callbackfunktion.  
}  
  
my $entry_rex = qr/  
 (  
   <h1  \s+  id="post-\d+">  
   .+?  
   <!-- \s+ the \s+ entry \s+ -->  
   .+?  
   <img \s+ src="[^"]+"  
   .+?  
   <strong>Dauer:\s*</strong>  
   [^|]+  
   \|  
   \s*  
   <strong>Format:\s*</strong>  
   [^|]+  
   \|  
   \s*  
   <strong>Größe:\s*</strong>  
   [^|]+  
   \|  
   \s*  
   <a \s+ href="[^"]".+?</a>  
 )  
/xs;  

Schau mal, ob diese REX in der Lage ist, einen Entry zu erkennen
Der modifier /x erlaubt whitspace zur Formatierung
Wenn du ihn weglässt, musst du allen Whitespace entfernen.

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische