Thema: Lerne gerade regex ...

servus jung,<BR>also ich hab mir jetzt das buch "reguläre ausdrücke" vom lustigen Friedl zugelegt (nachdem letzten thread hab ich gesehen das ich da meine lücken mal füllen sollte).<BR>muss sagen bin echt begeistert. er bringt es echt gut rüber. und schon nach 20 seiten ist man in der lage kleinere probleme zu lösen...<P>nun hab ich schon ein paar mal versucht selbst lösungen zu finden...<BR>funktionieren alle auch allerdings würde ich gern mal sehen wie ihr bestimmte dinge machen würdet... typisch ist da für mich das newlin zu br prob... das ich letztendlich so gelöst hab...<BR><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>s/([rn]|[n])/<br>/g; <BR></pre><HR></BLOCKQUOTE><BR>kann es mit der lösung bei bestimmten kombinationen zu problemen kommen?<P>was für ansätze habt ihr da?<BR>hab im netz schon einige verschiedene gesehen<P>gruß<BR>manu

Source Code Editor in Perl
http://proton-ce.sf.net

2

Re: Lerne gerade regex ...

ich mach das so:<P>s/cMn/<BR>/g;<BR>s/n/<BR>/g;<P>das funzt eigentlich immer  [img]images/icons/smile.gif" border="0[/img]

_______________________________________________________________

/-/annes (j|g) ... http://www.jg-webdesign.de

3

Re: Lerne gerade regex ...

servus,<P>hab grad selber einen kleinen fheler entdeckt...<BR><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>s/([rn]|[n])/<br>/g;<BR>   ^    ^ ^  ^<BR></pre><HR></BLOCKQUOTE><BR>die eckigen klammern bezeichnen ja listen<BR>das würde bedeuten das in der ersten liste<BR>eines der beiden zeichen "passt".<BR>ich will aber den fall "rn" abfangen<BR>also...<BR><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>s/(rn|n)/<br>/g;<BR></pre><HR></BLOCKQUOTE><P>so passt nur die kombination "rn" oder "n" <BR>die "[]" um "n" waren überflüssig<P>gruß<BR>manu

Source Code Editor in Perl
http://proton-ce.sf.net

4

Re: Lerne gerade regex ...

Könnt Ihr mir sagen, wie ich mit RegExp (und PHP) aus einer HTML-Seite bestimmte Links herausfiltern kann ?<P>.: BSP :.<BR>Datei:<BR><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>[...]<BR><a href="[irgendwas].[dateiformat]">[text]</a><BR>[...]<BR></pre><HR></BLOCKQUOTE><BR>danach soll etwa sowas ausgegeben werden:<BR><BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><HR><pre><BR>link gefunden: <a href="[SERVERNAME][irgendwas].[dateiformat]">[text]</a><BR></pre><HR></BLOCKQUOTE><P>Wie funktioniert das ?<BR>Wieso hat man bei manchen Webhostern keinen i-Net Zugang ? (die Dateien liegen auf einem eXternen Server!)<P>Danke für Eure Unterstützung!

5

Re: Lerne gerade regex ...

N'Abend,<BR>Ich will mich schon die ganze Zeit in PHP einarbeiten, aber irgendwie schleich ich da schon seit Wochen dran vorbei. Weil ich Dir <BR>aber nichts falsches erzählen möchte, kann ich Dir momentan bloß den Tip geben, Dich mal an gero zu wenden, der kann's.<P>gruß<P>matho

Re: Lerne gerade regex ...

Hi Shellmisch,<BR>vielleicht versteh ich die Frage nicht ganz, aber falls Du noch keine Antwort hast:<BR>Soll man ein URL-Bruchstück angeben können (z.B. "Devshare" oder "index" oder "php" ...), woraufhin dann alle URLs, die diesen String enthalten, ausgegeben werden? <BR>  <BR>Walter Z

7

Re: Lerne gerade regex ...

@ Shellm,<P>So, nun hab' ich gestern doch mal mit php angefangen, sieh's mir bitte nach, wenn da<BR>noch der eine oder andre Fehler drin ist. Zumindest bei mir zuhaus unter windows 2000<BR>aufm PC läuft's ganz gut.<BR>Folgendes script testet regexes im im textfeld eingefügten text:<P><BR><html><head><title>phpregex3</title><BR></head><BR><body><BR><form action ="<?=$PHP_SELF?>" method=post><P>REGEX   <input size="90"  value="regex" name="regex"><P><input type="submit" value="regex testen"></input><br><P>PLATZHALTER<BR><input size="40" name="ersatz" value="[#----#]"></input><br><P><textarea rows="22" cols="85" name="text">text</textarea>   TEXT   <BR></form><BR><?php <BR>            if(isset($regex))<BR>             {$test=stripslashes($regex);<BR>               echo "testregex war <code>".htmlentities($test)."</code><p>";<BR>               <BR>              $erg= preg_match_all($test,$text,$treffer);<BR>             if($erg)<BR>             {foreach($treffer as $i => $t)<BR>              {if(is_array($t))<BR>                {foreach($t as $j =>$tt)<BR>                 {$tt=str_replace("http://www.","",$tt);<BR>                  echo stripslashes(htmlentities("treffer  $j):  $tt"))."<br>";<BR>                 }<BR>               }<BR>              else echo $t;<BR>             }<BR>               $erg=preg_replace($test,$ersatz,$text);<BR>               echo "<br>Ersatz:<br>".htmlentities($erg);<BR>           }<BR>          else<BR>           {echo "Nichts gefunden";<BR>           }<BR>          }<BR>?><BR></body><BR><html><P><BR>Die Zeile $tt=str_replace("http://www.","",$tt); ist nur dafür da, die<BR>von Dir gewünschte Formatierung auszugeben, die kannste auch rausnehmen,<BR>dann bekommst Du eben die komplette Adresse samt <A HREF="http://www." TARGET=_blank>http://www.</A> <BR>Verwendet habe ich diese regex:<P>/<s*as*hrefs*=[^>]*http[^>]*>.*/a>/Ui<P>in der Annahme (da musste ich jetzt raten), es ginge Dir darum, ausschließlich<BR>a-Tags zu finden, die keine internen Seitenverweise sind.<P>Also, wie gesagt, bei mir läuft's, ich bin allerdings noch weit davon entfernt <BR>beurteilen zu können, ob man das in php nicht besser und kürzer machen<BR>könnte.Höchstwahrscheinlich.........<P>gruß<P>matho

Re: Lerne gerade regex ...

<BLOCKQUOTE><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von J|G:<BR><STRONG>ich mach das so:<P>s/cMn/<BR>/g;<BR>s/n/<BR>/g;<P>das funzt eigentlich immer   [img]images/icons/smile.gif" border="0[/img]</STRONG><HR></BLOCKQUOTE><P>kann mir bitte mal jemand verraten für was "cM" stehen soll?

---------------
Yeah, That's me!

9

Re: Lerne gerade regex ...

Servus,<BR>mit cX werden steuerzeichen gefiltert.<BR>wobei cM das gleiche bedeuted wie STRG + M<BR>gib das mal in der eingabaufforderung ein...<BR>jawohl hat die newline funktion<P>wobei dann das format (also n oder rn oder wie auch immer...) ja OS abhängig ist und STRG + M dann ja auch auf dem jeweiligen OS läuft und somit auch immer das richtige ergibt. so versteh ich das ....<P>nun wenn man halt dateien auf nem unix system hat die mit WIn erzeugt wurden kann es sein das, nur noch z.B. das "n" ersetzt wird... und dann bleibt das "r" übrig... und anders herum dürfte er dann das n nicht finden da er nach rn sucht...<BR>das nur in der theorie.... so stell ich mir das vor... allerdings hab ich das nicht ausprobiert... <P>@J|G hab ich das so richtig verstanden...?<P>deshalb setzt J|G wohl noch die andere REgEx drunter... *g*<P>grüssle<BR>manu<p>[ 05.11.2001: Beitrag editiert von: manu ]

Source Code Editor in Perl
http://proton-ce.sf.net