1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Frage: URL ersetzen

  • maciek
  • 10. Juli 2004 um 18:59
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • maciek
    Punkte
    2.805
    Beiträge
    434
    • 10. Juli 2004 um 18:59
    • #1

    folgende Aufgabenstellung: Ich möchte in einem Text alle URLs (also "Wörter", die mit http:// oder www. beginnen) ersetzen. Und zwar das ganze in einen <a href="..."> usw. Tag ersetzen (ich hoffe, es ist klar, was gemeint ist). Und zwar sollen alle die mit http:// anfangen in einem neuen Fenster aufgehen und alle anderen nicht.

    Frageee: Hat jemand ein fertiges PHP-Skript, das soetwas tut? Bevor ich mich nämlich länger damit beschäftige, wollte ich mal fragen, ob es mir nicht einer von Euch geben könnte. :D

    Thanx.

  • Murmel
    Punkte
    541
    Beiträge
    102
    • 10. Juli 2004 um 19:48
    • #2

    Ist zwar nicht von mir aber ich glaub, das Skript sollte es tun, auch gleich mit e-mails.

    Code
    [size=10]
    [size=10][size=10]if (!function_exists(urlparse)) {
     
    function urlparse($post) {
     
    $urlSA = array(
     
    "/([^]_a-z0-9-=\"'\/])((https?|ed2k|unreal|ftp|gopher|news|telnet):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\''\|\[\]\{\};<>]*)/si",
     
    "/^((https?|ed2k|unreal|ftp|gopher|news|telnet):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\''\|\[\]\{\};<>]*)/si"
     
    );
     
    $urlRA = array(
     
    "\\1[url='http:////2//4']\\2\\4[/url]",
     
    "[url='http:////1//3']\\1\\3[/url]"
     
    );
     
    $emailSA = array(
     
    "/([ \n\r\t])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4}))/si",
     
    "/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4}))/si"
     
    );
     
    $emailRA = array(
     
    "\\1\\2",
     
    "\\0"
     
    );
     
    $text = preg_replace($urlSA, $urlRA, $post);
     
    if (strpos($text, "@")) {
     
    $text = preg_replace($emailSA, $emailRA, $text);
     
    }
     
    return $text;
     
    }
     
    }
     
    [/size]
    [/size][/size]
    Alles anzeigen



    (Das hats mir jetzt ein bisschen seltsam formatiert, aber mit copy&paste sollts schon gehn)

    edit: den Mittelteil ändert das Forum ständig, ich versuchs hier nochmal auszuschreiben:

    Code
    [size=10]"\\1(url)\\2\\4(/url)",
     
    "(url)\\1\\3(/url)"
     
    [/size]



    und weiter unten

    Code
    [size=10]"\\1(email)\\2(/email)",
     
    "(email)\\0(/email)"



    [/size](bei beiden statt den runden Klammern eckige)

    Falls es nicht geht kann ichs dir als txt attachen, so geht nix verloren durchs Forum.

    Hmmm bin mir jetzt gar nicht sicher ob das Skript dein Problem löst, aber es geht zumindest irgendwie in die Richtung. Ich glaub es ersetzt durch (url)text(url) aber ein paar kleine Änderungen und das sollt gehn.

    lG,
    Murmel

  • bimbo
    Punkte
    2.320
    Beiträge
    390
    • 10. Juli 2004 um 19:49
    • #3

    fertiges skript kann ich dir keines anbieten, es dürfte aber _echt_ keien schwierigkeit werden das zu realisieren.

    ich hab ein skript, das ich bei einem web-projekt von mir verwende, es ersetzt "[open]BLAH.PHP[/open]" aus einem beliebigen text duch den text, wobei BLAH.PHP an jeder Stelle im Text included wird. das müsstest einfach anpassen können.

    gibts auf meiner HP zum download.
    [edit] mein dolles skript funkt doch net so richtig[/edit]

  • wuz_thomas
    Punkte
    1.501
    Beiträge
    195
    • 13. Juli 2004 um 14:09
    • #4

    voila:

    Code
    function html_activate_links($str) {
    $str = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="[url='file://1/']\\1[/url]" target="_blank">\\1</a>', $str);
    $str = eregi_replace('([[:space:]()[{}])([url='http://www.[-a-zA-Z0-9@:%_/+.~#?&//=]+)'"]www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)'[/url], '\\1<a href="[url='http:////2']http://\\2[/url]" target="_blank">\\2</a>', $str);
    $str = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href=\"mailto:\\1\">\\1</a>', $str);
    return $str;
    }
  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum