andre: Pattern Matching Problem - nur Online?!

hallo alle,

ich nutze folgende function (gästebuch) um die links automatisch zu generieren:

function links($eintrag) {
  $p[0][0] = '"(( |^)((ftp|http|https){1}://)[-a-zA-Z0-9@:%_+.~#?&//=]+)"i';
  $p[0][1] = '<a href="\1" target="_blank">klick!</a>';
  $p[1][0] = '"( |^)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)"i';
  $p[1][1] = '\1<a href="http://\2" target="_blank">klick!</a>';
  $p[2][0] = '"([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})"i';
  $p[2][1] = '<a href="mailto:\1">klick!</a>';
  for($i=0; $i<count($p); $i++) {
      $eintrag = preg_replace($p[$i][0], $p[$i][1], $text);
  }
   return nl2br($eintrag);
 }

lokal auf meinem rechner funktioniert alles einwandfrei aber nicht online? ich hatte $eintrag schon auf global gesetzt - bringt auch nichts.

hat jemand eine idee?
vielen dank
andré

  1. hallo nochmal. es funktioniert schon, aber nur wenn in den link kein "-" (minus) drin vorkommt.
    kennt sich jemand gut mit pattern matching aus, der das lösen kann?
    ich leider nicht :(

    vielen dank
    drella

    1. hat sich erledigt!!! funktioniert. sorry

      1. Huhu Andre

        hat sich erledigt!!! funktioniert. sorry

        Trotzdem noch ein kleiner Hinweis.
        preg_replace() kann auch mit Arrays "gefüttert"
        werden. Deine for-Schleife ist nicht unbedingt notwendig.

        Du könntest das ungefähr wie folgt schreiben:

        $map = array(
         '"(( |^)((ftp|http|https){1}://)[-a-zA-Z0-9@:%_+.~#?&//=]+)"i' =>
            '<a href="\1" target="_blank">klick!</a>',
          '"( |^)(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)"i' =>
              '\1<a href="http://\2" target="_blank">klick!</a>',

        etc.

        );

        $eintrag = preg_replace(array_keys($map), array_values($map), $text);

        Viele Grüße

        lulu

        --
        bythewaythewebsuxgoofflineandenjoytheday