uepselon: Nach Strings suchen?

Hallo,

will in einem String z.B. $str = " <a href=site.htm> " nach
dem Dateinamen aller vorkommenden .htm files Suchen.
Wie mach ich das am besten? Ich hab bisher nur Funktionen gefunden
die nach kompletten Strings suchen. Nicht aber etwas das z.B. so aussieht:

replace("href=%.htm","href=start.htm",$str);

Mein Zeiel ist es alle Links auf andere .htm files so zu ersetzten, das nacher der Link so ausshieht: href=shop.php?id=3268726&site=site.htm

Hab auch schon probiert nur das "href=" durch "href=shop?id=32442&site=" zu ersetzen, das klappt auch, nur will ich halt den dateinamen vorher nochmal verschlüsseln, das auf der Seite keine sicherheitslücken entsteht.
Deshalb müsste ich eben, nach allen .htm Files suchen könne die vorkommen und diese z.B. in ein Array speichern.

Aber wie?

Gruß

ueps

  1. Hallo ueps,

    ist jetzt sicher nicht die beste Lösung und ich hab schon Angst vor den Schlägen unserer Regexp-Experten, aber es könnte klappen:

    • Quelltext in einen String einlesen
    • per explode("href="",$str) zerlegen
    • Inhalt des Arrays nochmal zerlegen mit explode(".htm", $array)
      Damit sollten jetzt zumindest alle Dateinamen irgendwo in einem der Arrays sein. Klar, muss jetzt etwas verfeinert werden, ist aber eben nur mal ne schnelle Idee.

    Grüße aus Würzburg
    Julian

    1. Hi,

      • Quelltext in einen String einlesen
      • per explode("href="",$str) zerlegen
      • Inhalt des Arrays nochmal zerlegen mit explode(".htm", $array)
        Damit sollten jetzt zumindest alle Dateinamen irgendwo in einem der Arrays sein. Klar, muss jetzt etwas verfeinert werden, ist aber eben nur mal ne schnelle Idee.

      Danke,

      nur das Problem ist halt, das die Dateinamen nicht nur hinter einem href vorkommen können sondern auch bei action= , etc.
      Da wollte ich schon lieber was mit einem Regulären Ausdruck versuchen.

      In perl müsste das ja so gehen $str =~ /=(.*).htm/

      $dateiname = $1 + ".htm";

      Aber wie geht das in php?

  2. Hab die Lösung selbst gefunden, trozdem Danke.

    $str = "my=site.htm";

    ereg ("=(.*).tpl",$str,$reg);

    echo $reg[1]."htm";

    Gruß

    ueps