Eric @ EricBess WebHome

Spíše než jen přemýšlím, vědouce, že by byla nesmyslná,

Chinese (Simplified) flagItalian flagKorean flagPortuguese flagEnglish flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flagCroat flagDanish flagFinnish flagHindi flagPolish flagRumanian flagSwedish flagNorwegian flagCatalan flagFilipino flagHebrew flagIndonesian flagLatvian flagLithuanian flagSerbian flagSlovak flagSlovenian flagUkrainian flagVietnamese flag
By N2H

PHP FixPath Funkce [cesta dokončovací funkce]

FixPath Funkce: oprava špinavé cesty. Cestu PHP třídění funkcí.
Příklad:

? Zobrazit PHP kód
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
  <? Php 
  ; echo "nnn Dirty cesty: n"; 
  = 'C://////////Windows//////System' ; //  C:/System $ Cesty [] = 'C :////////// Windows ////// systému', / / C: / System 
  = 'C:HTMLjavascript..examplescolors.html' ; //  C:/HTML/examples/colors.html $ Cesty [] = 'C: HTMLjavascript .. examplescolors.html', / / C: / HTML / examples / colors.html 
  = '/root/./wwwroot/scripts/../././webpage' ; //  /root/wwwroot/webpage $ Cesty [] = '/ root /. / Wwwroot / scripts / .. /. /. / Webová stránka', / / / root / wwwroot / webové stránky 
  = 'wwwroot/webpage/../index.php?querystring' ; //  wwwroot/index.php?querystring $ Cesty [] = 'wwwroot / webové stránky / .. / index.php? Dotazového řetězce', / / wwwroot / index.php? Dotazového řetězce 
  = 'http://www.php.net/manual/en/../../downloads' ; //  http://www.php.net/downloads $ Cesty [] = 'http://www.php.net/manual/en/../../downloads', / / http://www.php.net/downloads 
  = 'http://www.php.net/downloads/test/test1/test2//./docs.php' ; //  http://www.php.net/docs.php $ Cesty [] = 'http://www.php.net/downloads/test/test1/test2//./docs.php', / / http://www.php.net/docs.php 
  = '../downloads/../docs.php' ; //  ../docs.php $ Cesty [] = '.. / downloads / .. / docs.php', / / .. / docs.php 
  = 'localhost//projetos/../_arquivos/../' ; //   "" $ Cesty [] = 'localhost / / projetos / .. / _arquivos /../'; / / "" 
  = 'C:/downloads/../../../' ; //  C:/ $ Cesty [] = 'C: / downloads /../../../'; / / C: / 
  = 'downloads/../../../' ; //  ../../ $ Cesty [] = 'BitTorrent /../../../'; / / ../../ 

  $paths as $path ) foreach ($ cesty jako $ path) 
  ( 
      . $path . "&quot;  =  &quot;" .  fixpath ( $path ) . "&quot;" ; echo "n". "$ cesta". "=". "fixpath ($ path)." ""; 
  ) 
  ?> 
Poznámka: "/ /" ještě jednou se vrátit zpět rozřezává kořeni.


Funkce:

? Stáhnout FixPath.php
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
  <? Php 
  $path = "" ) Funkce fixpath ($ path = "") 
  ( 
      / / Sanity kontrola 
      $path == "" ) { return false ; } if ($ cesta == "") (return false;) 

      / / Převede všechny "" to "/", a vymaže mezery na začátku a na konci řetězce 
      trim ( preg_replace ( "/\/" , "/" , ( string ) $path ) ) ; $ Path = trim (preg_replace ( "/ \ /", "/" (string) $ path)); 

      / * Odletem původní řetězec do částí: "root" a "dir". 
      * "Root" může být "C: /" (Windows), "/" (Linux) nebo "http://www.something.com/" (URL). To bude začátek výstupní řetězec. 
      * "Dir" může být "Windows / System", "root / html / examples /", "includes / třídy / class.validator.php", atd. 
      * / 
      "/^(/|w:/|(http|ftp)s?://[^/]+/)?(.*)$/i" , $path , $matches ,  PREG_SET_ORDER ) ; preg_match_all ("/^(/| w: / | (HTTP | FTP) s ?://[^/]+/)?(.*)$/ i ", $ cesta, $ matches, PREG_SET_ORDER); 

      $matches [ 0 ] [ 1 ] ; Path_root $ = $ matches [0] [1]; 
      $matches [ 0 ] [ 3 ] ; Path_dir $ = $ matches [0] [3]; 

      / / Je-li "dir" část s jedním nebo více lomítka na začátku, smaže všechny. 
      preg_replace ( array ( "/^/+/" ) , array ( "" ) , $path_dir ) ; $ Path_dir = preg_replace (array ("/^/+/"), array ( ""), $ path_dir); 

      / / Odletem "dir" část na každé lomítko 
      explode ( "/" , $path_dir ) ; $ Path_parts = explode ( "/", $ path_dir); 

      / / Vytvoří nové pole s pravé cesty. Každý prvek je nový adresář (nebo soubor v končí, pokud existuje) v pořadí. 
      $i = $j = 0 , $real_path_parts = array ( ) ; $i < count ( $path_parts ) ; $i ++ ) for ($ i = $ j = 0, $ real_path_parts = array (); $ i <count ($ path_parts); $ i + +) 
      ( 
          $path_parts [ $i ] == '.' ) if ($ path_parts [$ i] == ''.) 
          ( 
              continue; 
          ) 
          $path_parts [ $i ] == '' ) && ( $i != ( count ( $path_parts ) - 1 ) ) ) else if (($ path_parts [$ i] =='') & & ($ i! = (count ($ path_parts) - 1))) 
          ( 
        	  array ( ) ; $ Real_path_parts = array (); 
        	  0 ; $ J = 0; 
        	  continue; 
           ) 
          $path_parts [ $i ] == '..' ) else if ($ path_parts [$ i] =='..') 
          ( 
              isset ( $real_path_parts [ $j - 1 ] ) && $real_path_parts [ $j - 1 ] != '..' ) || ( $path_root != "" ) ) if ((isset ($ real_path_parts [$ j - 1]) & & $ real_path_parts [$ j - 1]! ='..') | | ($ path_root! = "")) 
              ( 
                  $real_path_parts ) ; array_pop ($ real_path_parts); 
                  $ J -; 
                  continue; 
              ) 
          ) 

          $real_path_parts , $path_parts [ $i ] ) ; array_push ($ real_path_parts, $ path_parts [$ i]); 
          $ J + +; 
      ) 
      . implode ( "/" , $real_path_parts ) ; return $ path_root. implode ( "/", $ real_path_parts); 
  ) 
  ?> 
1 Star2 Stars3 Stars4 Stars5 Stars (2 hlasů, průměr: 5 z 5)
Loading ... Nahrávám ...
- Uvítal hodnocení pro tento článek

Přihlaste-související

V této knize, čtenáři jsou také znepokojen tím, že tyto údaje:

  • N / A

17. července 2008 Autor: Eric | Kódování | Trackback? | Žádné komentáře | Email This Post Print This Post | 94 zobrazení

Přidat komentář

Zanechte odpověď

skrýt psát komentáře