Nirgendwer: .php entfernen

Moin,

in einer Variable echo $UserSeite[2]; steht z.B. impressum.php ist nicht das was ich benötige. Ist es möglich dass ich alles was NACH dem . kommt entferne bzw. kann ich irgendwie anderes auf den Wert kommen?

Ich mach es so $UserSeite = explode("/", $_SERVER['REQUEST_URI']);

  1. hi Nirgendwer,

    Moin,

    in einer Variable echo $UserSeite[2]; steht z.B. impressum.php ist nicht das was ich benötige. Ist es möglich dass ich alles was NACH dem . kommt entferne bzw. kann ich irgendwie anderes auf den Wert kommen?

    Ich mach es so $UserSeite = explode("/", $_SERVER['REQUEST_URI']);

    str_replace

    mfg

    tami

    1. Hi Tami,

      str_replace

      Und hier würde ich dieses dann so umsetzten?

        
      $a1 = $UserSeite[2];  
      $b1 = array(".html");  
      $b2 = "";  
      echo $a1new = str_replace($b1, $b2, $a1);  
      
      
      1. Hi Tami,

        str_replace

        Und hier würde ich dieses dann so umsetzten?

        $a1 = $UserSeite[2];
        $b1 = array(".html");
        $b2 = "";
        echo $a1new = str_replace($b1, $b2, $a1);

          
        So einfach ist das alles nicht. Ich weiß ja nicht, was Du willst, aber auch nur halbwegs vollständig sähe das so aus:  
          
        ~~~php
        <?php  
          
        $tests[]='?foo=foo.bar/baz';  
        $tests[]='/';  
        $tests[]='/?foo=foo.bar/baz';  
          
        $tests[]='/test';  
        $tests[]='/test?foo=foo.bar/baz';  
          
        $tests[]='/test/';  
        $tests[]='/test/?foo=foo.bar/baz';  
          
        $tests[]='/test.php';  
        $tests[]='/test.php?foo=foo.bar/baz';  
          
        $tests[]='/foo/test.php';  
        $tests[]='/foo/test.php?foo=foo.bar/baz';  
          
        $tests[]='/foo/bar/test.php';  
        $tests[]='/foo/bar/test.php?foo=foo.bar/baz';  
          
        # diese beiden Verzeichnisse (/tmp/verz, (/tmp/verz.php) mit anlegen:  
          
        $t=`mkdir /tmp/verz`;  
        $t=`mkdir /tmp/verz.php`;  
          
        $tests[]='/tmp/verz';  
        $tests[]='/tmp/verz?foo=foo.bar/baz';  
          
        $tests[]='/tmp/verz.php';  
        $tests[]='/tmp/verz.php?foo=foo.bar/baz';  
          
          
        foreach ($tests as $s) {  
              print PHP_EOL;  
              print "-----------------------------------";  
              print PHP_EOL;  
              print "Teste: '$s'";  
              print PHP_EOL;  
              print "-----------------------------------";  
              print PHP_EOL;	  
              # sonst fast Du auch ?foo=bar&bar=fuss mit dran:  
              $a=explode("?", $s, 2);  
              print_r($a);  
          
          
              # Dann am '/' trennen und das letzte Element holen:  
              $a=explode("/", $a[0]);  
              $s=$a[count($a)-1];  
              print ("Nach Abtrennen: '$s'");  
          
              # wenn es kein Verzeichnis ist;  
              if (! is_dir($_SERVER["DOCUMENT_ROOT"].$s)) {  
        	  # Dann Wenn ein punkt drin ist ... dann am '.' trennen und das letzte Element wegwerfen:  
        	  if ( -1 < strpos($s, '.') ) {  
        	      $a=array_reverse(explode(".", $s));  
        	      $dummy=array_shift($a);  
        	      $s=implode('.', array_reverse($a));  
        	      print PHP_EOL;  
        	      print ("Nach Explode, Shift und Implode: '$s'");  
        	  }  
              }  else {  
                  $s='index';  
              }  
          
          
              # Nachbetrachtung: 1. $s kann leer sein (Slash am Ende...)  
              if (! $s) { $s='index'; }  
              # Nachbetrachtung: 1. $s kann Verzeichnis sein (Slash am Ende nicht übertragen)  
              if (is_dir($_SERVER["DOCUMENT_ROOT"].$s)) { $s='index'; }  
              print PHP_EOL;  
              print "=================================";  
              print PHP_EOL;  
              print ("Ende: '$s'");  
              print PHP_EOL;  
              print "=================================";  
              print PHP_EOL;  
        }     
        
  2. hi Nirgendwer,

    Moin,

    in einer Variable echo $UserSeite[2]; steht z.B. impressum.php ist nicht das was ich benötige. Ist es möglich dass ich alles was NACH dem . kommt entferne bzw. kann ich irgendwie anderes auf den Wert kommen?

    Ich mach es so $UserSeite = explode("/", $_SERVER['REQUEST_URI']);

    nimm doch basename
    mfg

    tami

    1. Hi Tami,

      nimm doch basename

      du meinst also so?

      echo basename($UserSeite[2], ".php").PHP_EOL;

  3. Tach!

    in einer Variable echo $UserSeite[2]; steht z.B. impressum.php ist nicht das was ich benötige. Ist es möglich dass ich alles was NACH dem . kommt entferne bzw. kann ich irgendwie anderes auf den Wert kommen?

    PHP hat da ein paar spezialisierte Funktionen. In deinem Fall kann pathinfo() einen Pfad in Einzelteile zerlegen. Mit var_dump(pathinfo(...)) kannst du dir ansehen, was du alles bekommen kannst. (Vorher ein <pre> erhöht die Übersichtlichkeit.)

    dedlfix.