Roger: ereg_replace -> \\0 an funktion übergeben

moin!

ich lasse in meinem fließtext urls in "richtige links" umwandeln. das mache ich mit hilfe der funktion von php.net

<?php
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href="\0">\0</a>", $text);
?>

jetzt will ich aber noch den verlinkten text kürzen, da links auch manchmal brachial lang werden können. dazu will ich einfach eine weitere function aufrufen. allerdings lässt sich \0 nicht an diese übergeben :(

wie kann ich das lösen?

gruß.
roger.

--
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  1. hi,

    ich lasse in meinem fließtext urls in "richtige links" umwandeln. das mache ich mit hilfe der funktion von php.net

    <?php
    $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href="\0">\0</a>", $text);
    ?>

    ereg_replace solltest du wenn möglich nicht verwenden, die preg_-funktionen sind idR. die performantere alternative.

    jetzt will ich aber noch den verlinkten text kürzen, da links auch manchmal brachial lang werden können. dazu will ich einfach eine weitere function aufrufen. allerdings lässt sich \0 nicht an diese übergeben :(

    schau dir mal http://de2.php.net/manual/de/function.preg-replace-callback.php an.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. moin!

      schau dir mal http://de2.php.net/manual/de/function.preg-replace-callback.php an.

      danke.
      das scheint schon irgendwie die richtige funktion zu sein, nur klappt damit nun wieder mein aus den fingern gezogener regulärer ausdruck nicht mehr... :(
      ich frag mich nur wieso?

      gruß.
      roger.

      --
      Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
      1. Hallo!

        ich frag mich nur wieso?

        Mhhhh, die Glaskugel hat auch keine Antwort!

        MfG, André Laugks

        --
        L-Andre @ gmx.de
        1. moin!

          ich hab mich mittlerweile ein wenig belesen. fakt ist, das ereg_replace andere reg-exp benutzt wie preg_match.

          da ich da noch nie so ne helle leuchte war, beiß ich wohl auf granit :(

          gruß.
          roger.

          --
          Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
          1. Hallo!

            ich hab mich mittlerweile ein wenig belesen. fakt ist, das ereg_replace andere reg-exp benutzt wie preg_match.

            da ich da noch nie so ne helle leuchte war, beiß ich wohl auf granit :(

            Die Glaskugel hat immer och eine Antwort! Vielelicht sollte man ihr mal den Code geben, damit sie eine Antwort findet.

            MfG, André Laugks

            --
            L-Andre @ gmx.de
            1. moin!

              ?

              gruß.
              roger.

              --
              Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
              1. Hallo!

                ?

                Warum sollte ich Quellcodes oder eine URL mit einem Beispiel angeben?
                http://forum.de.selfhtml.org/faq/#Q-07c

                Warum postest Du nicht den Code damit man helfen kann, oder ist das Problem gelöst?

                MfG, André Laugks

                --
                L-Andre @ gmx.de
                1. moin!

                  welchen code?
                  den beipielcode hatte ich ja in meinem ersten post angegeben... und die reg-exp daraus lassen sich ja nicht einfach so mit preg_replace_callback() anwenden - scheint ne andere sysntax zu sein...

                  gruß.
                  roger.

                  --
                  Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
                  1. Hallo!

                    welchen code?

                    Das was Du bis jetzt hast.

                    Aber eigentlich ist es mir auch furzegal!

                    MfG, André Laugks

                    --
                    L-Andre @ gmx.de
                    1. moin!

                      Aber eigentlich ist es mir auch furzegal!

                      aha. sowas baut auf. danke.

                      dass ich mit reg-exp nicht klar komme, hab ich doch deutlich gemacht. vor allem, dass ich nichts von der syntax in preg_replace_callback() verstehe. mir gehts um das erkennungsmuster für url. was willst du denn hören? dass ich irgendwas zusammenfutzele was sowieso nicht funktioniert, damit du meinen willen an einer lösung erkennst? das ich schon ne weile dran rumstricke und wenig helfer bisher gefunden habe, findest du hier im archiv.

                      gruß.
                      roger.

                      --
                      Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
                      1. Hallo!

                        dass ich mit reg-exp nicht klar komme, hab ich doch deutlich gemacht. vor allem, dass ich nichts von der syntax in preg_replace_callback() verstehe. mir gehts um das erkennungsmuster für url. was willst du denn hören? dass ich irgendwas zusammenfutzele was sowieso nicht funktioniert, damit du meinen willen an einer lösung erkennst? das ich schon ne weile dran rumstricke und wenig helfer bisher gefunden habe, findest du hier im archiv.

                        So läuft noch alles rund? Was ist daran kompliziert das zu posten was man hat? Frage Dich mal, wieso kein anderer Forumteilnehmer einspringt? Wenn ich Dich ins Archiv schicken wollte, hätte ich das schon lange gemacht.

                        Ich bin, was diesen Thread angeht, raus!

                        Vielleicht hast Du Glück das noch jemand einspringt.

                        Vorsicht... Doppelpostings sind hier nicht gern gesehen!

                        MfG, André Laugks

                        --
                        L-Andre @ gmx.de
                        1. moin!

                          So läuft noch alles rund? Was ist daran kompliziert das zu posten was man hat?

                          was soll ich den posten? die funktion preg_replace_callback()?! die setzt sich nun mal aus dem suchmuster - WAS ICH NICHT KANN UND WOBEI ICH HILFE BENÖTIGE - und der funktion zusammen, die man aufrufen will. aber um letzteres geht es mir nicht. kluge sprüche ablassen kann ich auch.
                          und ich wollte nie jemanden beleidigen. du hast hier diesen verkackten ton angeschlagen!

                          Vorsicht... Doppelpostings sind hier nicht gern gesehen!

                          erklär das nem noob. ich bin lange genug hier, um das selbst zu wissen.

                          gruß.
                          roger.

                          --
                          Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  2. moin!

    mit hilfe von wahsaga's tip (und google) hab ich mir jetzt was zusammengebastelt:

    function url2link($str)
    {
     $str = ' '.$str;
     $str = preg_replace_callback("#(^|[\n ])([\w]+?://.*?[^ "\n\r\t<]*)#is", "getShortString", $str);
     $str = preg_replace_callback("#(^|[\n ])((www|ftp).[\w-]+.[\w-.~]+(?:/[^ "\t\n\r<]*)?)#is", "getShortString", $str);
     $str = substr($str, 1);
     return $str;
    }

    function getShortString($str)
    {
     $laenge = 40;
     $url = str_replace("http://", "", $str[2]);
     if (strlen($str[2]) > $laenge)
     {
      $str[2] = substr($str[2], 0, ($laenge/2)) . "..." . substr($str[2], - ($laenge-3-$laenge/2));
     }
     return $str[1]."<a href="http://".$url."" target="_blank">".$str[2]."</a>";
    }

    das funktioniert auch schon recht gut. dazu hab ich aber noch 2 fragen:

    1. ich kapiere nach wie vor die syntax nicht ("#(^|[\n ])([\w]+?://.*?[^ "\n\r\t<]*)#is". kann mir einer erklären, was die macht?

    2. ich würde gern einen zweiten (oder vielleicht sogar dritten) parameter mit angeben, um flexibel zu sein. so kann man mit diesem zum beispiel die länge beeinflussen. wie kann man das machen? hab im manual nichts gefunden.

    gruß.
    roger.

    --
    Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de