PHP FixPath Funkce [cesta dokončovací funkce]
FixPath Funkce: oprava špinavé cesty. Cestu PHP třídění funkcí.
Příklad:
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 . "" = "" . fixpath ( $path ) . """ ; echo "n". "$ cesta". "=". "fixpath ($ path)." ""; ) ?> |
Poznámka: "/ /" ještě jednou se vrátit zpět rozřezává kořeni.
Funkce:
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); ) ?> |
| - Uvítal hodnocení pro tento článek |
Ne dary v posledních 180 days.Who provést darování odejdou zprávy zde. Darujte teď.
Jedná se o wordpress plugin WP-dárců. Poskytuje inteligentní funkce pro darování autoleave sponzora Informace v tomto obalu po zaplacení. Lidé mohou darovat a předloží jméno / URL nebo TextLink AD. Informací o nejnovějších dárci jsou zobrazeny v oblaku. Tato Další osoba věnuje, tím větší bude jejich vztah be.It 's podpoří nejoblíbenější platební rozhraní v budoucnosti. ParPal Jen ten první. Více ..
Powered by: WP-sponzorům
Přihlaste-související | V této knize, čtenáři jsou také znepokojen tím, že tyto údaje:
|















































Zanechte odpověď