Zwiebelring2000: Regex Text-Links automatisch umwandeln

Hallo!

Ich habe ein paar Probleme. Wenn ich einen Textbaustein habe

$text='
Meine Webseite: www.domain.de
Meine E-Mail: mueller@domain.de
';

und die Ausgabe so aussehen soll:

$text='
Meine Webseite: <a href="http://www.domain.de">www.domain.de</a>
Meine E-Mail: <a href="mailto:mueller@domain.de">mueller@domain.de</a>
';

dann kann ich das ja mit Regulären Ausdrücken suchen und ersetzen. Aber ich finde die passenden Ausdrücke nicht.

$suche = array(
'/([\w-?&;#~=./]+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?))/i',
'/([\w\d+-]+.[\w\d+-/.]+)/i'
);

$ersetze = array(
'<a href="mailto:$1">$1</a> ',
'<a href="http://$1" target="_blank">$1</a> '
);

$text = preg_replace($suche,$ersetze,$text);

Das funktionier aber nicht wirklich.
Könnt ihr mir da helfen?

  1. Ich habe ein paar Probleme. Wenn ich einen Textbaustein habe

    $text='
    Meine Webseite: www.domain.de
    Meine E-Mail: mueller@domain.de
    ';

    und die Ausgabe so aussehen soll:

    $text='
    Meine Webseite: <a href="http://www.domain.de">www.domain.de</a>
    Meine E-Mail: <a href="mailto:mueller@domain.de">mueller@domain.de</a>
    Könnt ihr mir da helfen?

    Nein, noch nicht.
    Bitte gib uns erstmal mehr Infos darüber, wie genau die Textbausteine sich verändern. Bleibt das "Meine Webseite: " immer gleich? Ist die Domain aus "www.%domainname%.de" aufgebaut oder gibt es auch andere Endungen ".com" oder andere Subdomains "www2." usw.

  2. Hello,

    habe da eine Funktion aus einem alten Projekt...

    function textfilter($text,$filter)
    {
      if (!is_array($filter))
      {
        $filter = explode(",",$filter);
      }

    if(in_array('email',$filter))$text = ereg_replace("mailto:[^<>[:space:]]+[[:alnum:]/]","<a href="\0">\0</a>", $text);
      if(in_array('http',$filter))$text  = ereg_replace("http://[^<>[:space:]]+[[:alnum:]/]","<a href="\0" target="_blank">\0</a>", $text);
      if(in_array('ftp',$filter))$text =  ereg_replace("ftp://[^<>[:space:]]+[[:alnum:]/]","<a href="\0">\0</a>", $text);

    return $text;
    }

    Sinn der Übung war es, wenn im String $filter z.B. "email,http" drin stand, dann sollten alle gefundenen URLs und alle eMail-Namen aktiv dargestellt werden...

    Vielleicht hilft es Dir weiter.

    Neu nachdenken mag ich heute nicht wirklich. :-(((
    Das hat aber nichts mit Dir zu tun!

    Harzliche Grüße vom Berg
    http://bergpost.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)