[REGEX] gekürzte url im fließtext verlinken

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [REGEX] gekürzte url im fließtext verlinken

    hallo!

    bisher habe ich meine urls im fließtext immer mit
    PHP-Code:
    $str eregi_replace ("www.[^<>[:space:]]+[[:alnum:]/](\.[a-z0-9-]{2,4})+(\?*[/:\-\'{}()._&a-zA-Z0-9+=]*)""<a href=http://\\0>\\0</a>"$str); 
    umgewandelt.

    das ging auch prima. jetzt möchte ich aber noch den linktext kürzen. hat jemand ne ahnung/script/link, wie ich das machen kann?
    Dein Newsletter auf deiner eigenen Homepage: http://newsletter.maennchen1.de

  • #2
    hat jemand ne ahnung/script/link, wie ich das machen kann?
    ja, ich.



    ...



    benutze preg_replace, modifier e und substr im ersatz-string
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      das mit dem substr kriege ich sicherlich auch hin. ich bekomme nur immer bei den reg-exp kopfschmerzen. weil die müssen ja jetzt umgewandelt werden. oder?
      kannst du mir da helfen?
      Dein Newsletter auf deiner eigenen Homepage: http://newsletter.maennchen1.de

      Kommentar


      • #4
        kannst du mir da helfen?
        kann ich. dazu mußt du mir aber sagen, welche form die urls haben können? ein beispieltext wäre gut ...

        dein regexp erkennt atm nur urls, die mit www beginnen? was ist mit den anderen, wie astalavista.box.sk, ...? oder google.co.uk?

        wäre es nicht einfacher, die urls mittels [ url] url [ /url] zu markieren?

        fragen über fragen.

        wenn du selbst probieren willst: pcre.nophia.de/evaluate/ ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          *doppelposting*
          server war plötzlich weg...
          Zuletzt geändert von rok; 02.11.2004, 08:17.
          Dein Newsletter auf deiner eigenen Homepage: http://newsletter.maennchen1.de

          Kommentar


          • #6
            hallo!
            ja hast recht, die funktion ist ziemlich unvollständig. bisher habe ich mir diese zusammengeschraubt:

            PHP-Code:
            function url_to_link($str$subjekt "")
            {
             
            $str eregi_replace ("[[:alpha:]]+://www""www",$str);
             
            $str ereg_replace ("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/](\\.[a-z0-9-]{2,4})+(\\?*[/:\\-\\'{}()._&a-zA-Z0-9+=]*)""<a href=\\\\0 target=_blank class=\\"sw12\\">\\\\0</a>"$str);
             
            $str ereg_replace ("www.[^<>[:space:]]+[[:alnum:]/](\\.[a-z0-9-]{2,4})+(\\?*[/:\\-\\'{}()._&a-zA-Z0-9+=]*)""<a href=http://\\\\0 target=_blank class=\\"sw12\\">\\\\0</a>"$str);
             
            $str ereg_replace ("[[:alpha:]]+@[^<>[:space:]]+[[:alnum:]/](\\.[a-z0-9-]{2,4})+""<a href=mailto:\\\\0".$subjekt." target=_blank class=\\"sw12\\">\\\\0</a>"$str);
             return 
            $str;

            bitte nicht falsch verstehen, aber um einen string zwischen 2 tags zu erkennen, dazu hätte ich keine hilfe gebraucht. die schwierigkeit liegt ja gerade darin, den link zu finden.
            aber trotzdem schon mal danke für deine hilfe!
            Dein Newsletter auf deiner eigenen Homepage: http://newsletter.maennchen1.de

            Kommentar


            • #7
              moin!

              mit hilfe von google hab ich mir jetzt was zusammengebastelt:

              PHP-Code:
              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($str1);
                  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ß.
              Dein Newsletter auf deiner eigenen Homepage: http://newsletter.maennchen1.de

              Kommentar


              • #8
                Original geschrieben von rok
                1. ich kapiere nach wie vor die syntax nicht
                dann schau dir unser tutorial über regex an, oder schau ins manual :-)

                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?
                was macht denn deiner meinung nach
                PHP-Code:
                $laenge 40
                im derzeitigen script ...?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  was macht denn deiner meinung nach
                  PHP-Code:
                  $laenge 40
                  im derzeitigen script ...?
                  na es gibt die länge des anzuzeigenden strings in der url wieder.

                  abgesehen davon kann man mit einem weiteren parameter evtl. eine andere css-klasse übergeben, einen extra parameter für die url, etc.

                  Nachtrag:
                  So schwierig isses eigentlich gar nicht, wenn man sich das tut mal durchliest (was ich eben gemacht habe)! echt super! danke!
                  http://www.php-resource.de/tutorials/read/10/1/
                  Zuletzt geändert von rok; 02.11.2004, 15:03.
                  Dein Newsletter auf deiner eigenen Homepage: http://newsletter.maennchen1.de

                  Kommentar

                  Lädt...
                  X