String beschneiden, ich kriege noch en Raster

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

  • String beschneiden, ich kriege noch en Raster

    Hallo, Ich möchte einen teil eines strings entfernen. An diesem Problem sitze ich nun schon circa 3h, dabei dachte ich es wäre ne Sache von max 30 min.
    Also ich habe eine URL (string) http://www.test.de/zzz/uzt/w.html. Was ich zum Schluss haben möchte ist http://www.test.de/. Das ganze Progy soll mit Funktionen arbeiten. Ich habe das Script auf 2 Files aufgeteilt.




    hier der Aufruf
    PHP-Code:
       include ('bearbeitestring.php');
        
    $ref="http://www.test.de/zzz/uzt/w.html";
        
              
    $x=  bearbeitestring ($ref);
                  echo 
    $x;       //gebe den gekürzten string zürück
        
    ?> 
    und hier die Funktion
    PHP-Code:
    <?PHP
     
    function bearbeitestring ($ref)
    {


      
    $len strlen($ref); //länge des strings bestimmen
      
    for($i=0$i<$len$i++)
      {


                       if (
    $ref{$i}=='/'// ist der slash im refererstring gefunden....
                       
    {
                       
    $c++;  //dann zähle wie oft
                       
    }
                         
    $ref1=$ref{$i}; // kopiere  alle Buchtaben hintereinander in ref1

                      
    if ($c>2)
                               {
                              return 
    $ref1//wenn mehr als 2 '/' gefunden wurden returne den string bis dahin

                              
    }


      }
    return 
    $ref1//wenn weniger strings gefunden wurden, returne auch

    }
    ?>

  • #2
    PHP-Code:
    function extrahiereURL($url)
    {
       
    $arr parse_url($url);

       return 
    $arr['scheme'] . '://' $arr['host'] . '/';

    Kommentar


    • #3
      Hi, danke, das ging aber schnell. Ich habe deine Lösung aber noch nicht ausprobiert. Aber kannst du mir nicht sagen, was an meiner Lösung falsch ist?
      Dein code ist natürlich viel kürzer und besser, trotzdem möchte ich wissen, was ich falsch gemacht habe, nicht wie man das Problem am effizientesten löst.

      zabarax

      Kommentar


      • #4
        Klar, kein Problem. Mir ist vorhin beim Lesen deines Problem nur sofort der Lösungsansatz eingefallen und so habe ich deinen Quelltext erstmal garnicht angeschaut. Deine Funktion sollte so gehen (Es stimmte lediglich die Zeile $ref1 = $ref{$i} nicht):

        PHP-Code:
        <?PHP
        function bearbeitestring ($ref)
        {
          
        $len strlen($ref); //länge des strings bestimmen
          
        $ref1 ''// setze Anfangswert

          
        for($i=0$i<$len$i++)
          {
            if (
        $ref{$i}=='/'// ist der slash im refererstring gefunden....
            

               
        $c++;  //dann zähle wie oft
            
        }
            
            
        // Hier muss mit .= die Zeichen angehängt werden
            
        $ref1 .= $ref{$i}; // kopiere  alle Buchtaben hintereinander in ref1

            
        if($c>2)
            {
              return 
        $ref1//wenn mehr als 2 '/' gefunden wurden returne den string bis dahin
            
        }
          }
          return 
        $ref1//wenn weniger strings gefunden wurden, returne auch
        }
        Das ist jetzt auch nicht getestet. Sollte aber klappen.
        Zuletzt geändert von webstar85; 22.01.2004, 21:14.

        Kommentar


        • #5
          1. verwechselst du {} mit []
          2. überschreibst du in der funktion $ref immer wieder mit dem treffer

          so gehts:
          PHP-Code:
          <?PHP
          function bearbeitestring ($ref)
          {
            
          $len strlen($ref); //länge des strings bestimmen
            
          for($i=0$i<$len$i++)
            {
                  if (
          $ref[$i]=='/'// ist der slash im refererstring gefunden....
                  
          {
                      
          $ref1.=$ref[$i];
                      
          $c++;  //dann zähle wie oft
                  
          }
                  else
                  {
                      
          $ref1.=$ref[$i]; // kopiere  alle Buchtaben hintereinander in ref1
                  
          }

                  if (
          $c>2)
                  {
                      return 
          $ref1//wenn mehr als 2 '/' gefunden wurden returne den string bis dahin
                  
          }
              }
              return 
          $ref1//wenn weniger strings gefunden wurden, returne auch
          }
          $ref="http://www.test.de/zzz/uzt/w.html";
          echo 
          $x=  bearbeitestring ($ref);
          ?>
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            1. verwechselst du {} mit []
            Zugriff auf Zeichen in Strings
            Auf Zeichen innerhalb von Strings kann durch die Angabe des nullbasierten Offsets in geschweiften Klammern nach dem String, auf das gewünschte Zeichen zugegriffen werden.

            Anmerkung: Für Abwärtskompatibilität können Sie immer noch die Array-Klammern verwenden. Diese Syntax wird jedoch seit PHP 4 missbilligt.

            http://de.php.net/manual/de/language.types.string.php

            Kommentar


            • #7
              Danke!
              Ich denke, das jetzt alles klar ist.

              EDIT:
              Zur Lösung von webstar:

              Wenn die URL mit www anfängt, anstelle von http, dann geht dein code wahrscheinlich nichtmehr.

              Wenn ich bei googel suche, haben alle URL KEIN http:// am Anfang.
              Schneidet googel das http:// ab?
              Also muss eine URL mit http://www anfangen?
              grüße
              Zabarax
              Zuletzt geändert von zabarax; 22.01.2004, 23:42.

              Kommentar


              • #8
                Original geschrieben von webstar85
                Anmerkung: Für Abwärtskompatibilität können Sie immer noch die Array-Klammern verwenden. Diese Syntax wird jedoch seit PHP 4 missbilligt.
                hups ... da weist man immer aufs manual hin und sollte wohl selber häufiger mal reinschauen
                Kissolino.com

                Kommentar

                Lädt...
                X