Seite 6 von 6 ErsteErste ... 23456
Ergebnis 101 bis 104 von 104

Thema: Der 'große' PHP-Thread

  1. #101
    Ich würde es mit explode machen:
    PHP-Code:
    <?php
    $file 
    file('test.html''r');
    $inhalt implode($file);
    $temp explode('<script language="javascript">'$inhalt);
    $temp2 explode('<script language="javascript">'$temp[1]);
    echo 
    $temp2[0];
    ?>
    Diese Methode könnte man mit einer Schleife auch wiederholen

  2. #102
    Ifs sind zwar nett, aber es geht nichts über ein einfaches preg_match_all(). BTW, meine Version erkennt sowohl die alte Version mit language="" als auch die neue mit type="".
    PHP-Code:
    <?

    $string = "<bla></bla><script type=\"JavaScript\">Skript!</script>dfgdfg<script language=\"JavaScript\">Skript mit\nmehreren Zeilen!</script>fd<dh />";

    $pattern = "/(<script.*(type|language).*=\"JavaScript\".*>.*<\/script>)/isU";

    preg_match_all ($pattern, $string, $result);

    print_r ($result[0]); // dieses Array enhält fertig alle Skripte.

    ?>

  3. #103
    @ Jesus_666:
    Erklärst du uns... vor allem mir, eben den Regulären Ausdruck?
    Der Nachteil an den meisten Tuts ist nämlich die mangelnde Praxisbezogenheit im RegExp-Bereich. ¬_¬

    Man Dankt schonmal.

  4. #104
    Daß ich den mal eben so aus dem Ärmel geschüttelt habe liegt wohl auch daran, daß ich heute schon den ganzen Tag mit den Dingern arbeite - IRC-Logs nach bestimmten Regeln in HTML umwandeln und dabei auch noch fehlertolerant zu sein kann ziemlich anstrengen...


    Also gut. /(<script dürfte soweit klar sein: Der Schrägstrich leitet den Ausdruck ein und die Klammer eine Gruppe (BTW, vielleicht kann man die Klammern auch weglassen).
    Bei Perl-Regexps steht der Punkt für ein beliebiges Zeichen und das Sternchen für "null mal oder öfter". Nach <script kommt also erst mal eine beliebige Zahl beliebiger Zeichen, bis wir beim nächsten Teil sind.
    (type|language) ist wieder eine Gruppe. Der Querstrich steht dafür, daß entweder das eine oder das andere vorkommen kann. Also wird hier entweder type oder language gefunden. Danach wieder beliebig viele beliebige Zeichen... Die könnte man sogar weglassen, da nach dem type/language ja immer gleich das Gleichheitszeichen kommt.
    ="JavaScript".*>.*<\/script> muß ich wohl nicht weiter erläutern. Klartext und ein paar beliebige Zeichenfolgen. Die zweite Zeichenfolge ist der gesamte Inhalt des Tags.
    /isU: wir schließen den Ausdruck ab und hängen noch ein paar Optionen hinten dran: i sorgt dafür, daß Groß- und Kleinschreibung ignoriert werden. Man weiß ja nie, wie die Seite geschrieben ist, die man gerade ausnimmt. s sorgt dafür, daß . auch bei Zeilenumbrüchen funktioniert. So kann man mit .* mehere Zeilen erfassen. U sorgt dafür, daß der Regexp nicht so gierig ist - normalerweise würde er versuchen, so viel Text wie möglich zu erfassen und dabei vom ersten <script bis zum letzten </script> alles als ein Ergebnis nehmen. U läßt den Regexp nur soweit greifen, wie er mindestens funktioniert.


    Und wenn ihr denkt, daß das Ding unübersichtlich war, dann seht euch mal dieses Prachtstück an:
    Code:
    /(\[)(\d\d:\d\d)(])(\s+)(&lt;)(\S+)(&gt;)(\s+)(\[)([^\n\r(\d\d:\d\d)\[\]]+?)(\])([^\n\r]*?)(.*)/U[
    So, jetzt wißt ihr, womit ich meinen Nachmittag verbracht habe. ^_^ (BTW, damit finde ich in den Logs meiner IRC-DSA-Runde OOC-Zeilen.)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •