url länge kürzen

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

  • url länge kürzen

    hi @ all

    Hier mein Code:

    PHP-Code:
    $message_txt eregi_replace("\\[URL2=([^\\[]*)\\]([^\\[]*)\\[/URL2\\]","
    <a href=\"\\1\">\\2</a>"
    ,$message_txt); 
    und nun würde ich gerne wissen wie ich diese ausgabe einer URL kürzen kann?

    es soll soetwas vom aussehen her herauskommen :http://www.php-resource.de/for...thead.php

    aber ich versuche das jetzt schon seit ewigkeit herauszufinden.

    Wie ich die Url so kürze weiss ich auch nur wie bekomme ich die werte aus \\1 und \\2 in diese Funktion.

    Ich hoffe ihr könnt mir helfen.

    P.s. Ich habe im board gesucht aber nichts richtiges gefunden.
    Zuletzt geändert von wahsaga; 28.04.2005, 20:56.

  • #2
    z.B. mit substr() erstmal alle Zeichen von x bis Zeichen y rausschneiden und diese an str_replace() übergeben und mit .... ersetzen
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Eigentlich will ich ganau soetwas:

      unter diesem link: http://www.php-resource.de/forum/sho...t=url+k%FCrzen

      aber ich verstehe daran folgenden teil nicht:

      PHP-Code:
          $str preg_replace('|\[url\]http://(.+)\[/url\]|ie''urlcut("$1","$1","http://")'$str);    
          
      $str preg_replace("|\[url](.+)\[/url\]|ie",'urlcut("$1")',$str);
          
      $str preg_replace("|\[url=http://(.+)\](.+)\[/url\]|ie",'urlcut("$1","$2","http://")',$str);
          
      $str preg_replace("|\[url=(.+)\](.+)\[/url\]|ie",'urlcut("$1","$2")',$str); 
      Woher bekommen in diesen Funktionen $1 bzw. $2 ihren wert zugewiessen?

      Wie soll die Funktion urlcat diese noch ausführen wenn sie in ' ' geschrieben ist?

      Soweit ist mein versuch:

      Code:
      $message_txt = eregi_replace("\[URL=([^\[]*)\]([^\[]*)\[/URL\]","
      <a href=\"\\1\">\\2</a>",$message_txt);
      Ich hoffe ihr könnt mir helfen.

      Kommentar


      • #4
        Woher bekommen in diesen Funktionen $1 bzw. $2 ihren wert zugewiessen?
        Das sind sog. Backreferences. Siehe auch unser Tutorial.

        Wie soll die Funktion urlcat diese noch ausführen wenn sie in ' ' geschrieben ist?
        dafür ist der Modifier e zuständig. Siehe Manual.

        Kommentar


        • #5
          Hi

          Ich habe jet etwas versucht so in etwa:

          PHP-Code:
              function urlcut($url,$url2=0,$zusatz=0) {
              echo 
          $url;
              echo 
          $url2;
                 
          $raw $url;
              if(!
          $url2$url2 $url;
             if (
          strlen($url) > 40) { // 40 is die länge ab wann eine url gekürzt werden soll
                  
          $url2 sprintf('%s...%s'substr($url018), substr($url2, -18)); // 18 ist die länge vom anfang bis zum ... und -18 die länge vom ... bis zum ende
             
          }

             return 
          sprintf('<a href="%s%s" target="_blank">%s%s</a>',''$raw,''$url2);
          }

              
          $message_txt preg_replace("|[URL=http://(.+)](.+)[/URL]|ie",'urlcut("$1","$2")',$message_txt); 
          Doch wenn ich das mit einem Textfeld kombiniere und dort folgendes eingebe Beiseil: http://www.php-resource.de/forum

          aber bei der ausgabe erhalte ich folgendes:
          [RL=http://www.php-...ource.de/forum[/UR]

          Kommentar


          • #6
            schalt mal die url-erkennung in deinem posting aus, so ist der quelltext ungültig.

            Kommentar


            • #7
              Danke habe das Problem gelöst:

              PHP-Code:
                  function urlcut($url,$url2,$zustand) {
                  echo 
              "$url<br>$url2";
                      
              $raw $url;
                  if(!
              $url2$url2 $url;
                  if (
              strlen($url) > 40) {
                      
              $url2 sprintf('%s...%s'substr($url018), substr($url2, -18));
                 }
                 return 
              sprintf('<a href="%s%s" target="_blank">%s%s</a>',$zustand$raw,$zustand$url2);
              }

              $message_txt preg_replace("|\[URL=http://(.+)\](.+)\[/URL]|ie",'urlcut("$1","$2","http://")',$message_txt); 
              hatte ein paar von denen hier \ vergessen.

              Kommentar

              Lädt...
              X