|
The Addict
Join Date: Jun 2008
Posts: 319
Thanks: 2
|
Random script I made
So I got bored and made a script to essentially turn a file into an object....have it.
Examples
php Code:
<?php$dir = dirname(__FILE__); include $dir . '/file.php'; $file = new file($dir . '/anime.txt'); //Function supports All of the following methods//of inserting into the data file$file-> insert('Teacher', 'Great'); $file-> insert(10, 'The Anime List'); $insertArray = array( 12, 'This', 5, 3, 'tree' ); $file-> insert($insertArray, 'Nike'); //Truncase the file$file-> truncate(100, 'left'); //Cut off a section of it somewhere$file-> cutoff(10, 'right'); //Search for a particularly wordif( $file-> search('great') ){ //Do cool stuff here}//We can also do occurencesif( $file-> search('great', true) > 0 ){ echo 'do more cool stuff'}//append and prepend data$file-> append('foo'); $file-> prepend('foothis'); //Lets say we're done with editing$file-> save(); //We can offload to user$file-> download();
The Script
php Code:
<?phpclass file{ private $data, $filePath; private $is = array( 'image' => array( 'png', 'gif', 'jpg', 'jpeg', 'bmp', 'psd', 'ai', 'raw', 'tiff' ), 'doc' => array( 'txt', 'doc', 'docx', 'pdf', 'rdf', 'odf' ), 'zip' =>array ( '7z', 'zip', 'gz', 'tar', 'rar', ) ); private $mimetypes = array( "323" => "text/h323", "acx" => "application/internet-property-stream", "ai" => "application/postscript", "aif" => "audio/x-aiff", "aifc" => "audio/x-aiff", "aiff" => "audio/x-aiff", "asf" => "video/x-ms-asf", "asr" => "video/x-ms-asf", "asx" => "video/x-ms-asf", "au" => "audio/basic", "avi" => "video/x-msvideo", "axs" => "application/olescript", "bas" => "text/plain", "bcpio" => "application/x-bcpio", "bin" => "application/octet-stream", "bmp" => "image/bmp", "c" => "text/plain", "cat" => "application/vnd.ms-pkiseccat", "cdf" => "application/x-cdf", "cer" => "application/x-x509-ca-cert", "class" => "application/octet-stream", "clp" => "application/x-msclip", "cmx" => "image/x-cmx", "cod" => "image/cis-cod", "cpio" => "application/x-cpio", "crd" => "application/x-mscardfile", "crl" => "application/pkix-crl", "crt" => "application/x-x509-ca-cert", "csh" => "application/x-csh", "css" => "text/css", "dcr" => "application/x-director", "der" => "application/x-x509-ca-cert", "dir" => "application/x-director", "dll" => "application/x-msdownload", "dms" => "application/octet-stream", "doc" => "application/msword", "dot" => "application/msword", "dvi" => "application/x-dvi", "dxr" => "application/x-director", "eps" => "application/postscript", "etx" => "text/x-setext", "evy" => "application/envoy", "exe" => "application/octet-stream", "fif" => "application/fractals", "flr" => "x-world/x-vrml", "gif" => "image/gif", "gtar" => "application/x-gtar", "gz" => "application/x-gzip", "h" => "text/plain", "hdf" => "application/x-hdf", "hlp" => "application/winhlp", "hqx" => "application/mac-binhex40", "hta" => "application/hta", "htc" => "text/x-component", "htm" => "text/html", "html" => "text/html", "htt" => "text/webviewhtml", "ico" => "image/x-icon", "ief" => "image/ief", "iii" => "application/x-iphone", "ins" => "application/x-internet-signup", "isp" => "application/x-internet-signup", "jfif" => "image/pipeg", "jpe" => "image/jpeg", "jpeg" => "image/jpeg", "jpg" => "image/jpeg", "js" => "application/x-javascript", "latex" => "application/x-latex", "lha" => "application/octet-stream", "lsf" => "video/x-la-asf", "lsx" => "video/x-la-asf", "lzh" => "application/octet-stream", "m13" => "application/x-msmediaview", "m14" => "application/x-msmediaview", "m3u" => "audio/x-mpegurl", "man" => "application/x-troff-man", "mdb" => "application/x-msaccess", "me" => "application/x-troff-me", "mht" => "message/rfc822", "mhtml" => "message/rfc822", "mid" => "audio/mid", "mny" => "application/x-msmoney", "mov" => "video/quicktime", "movie" => "video/x-sgi-movie", "mp2" => "video/mpeg", "mp3" => "audio/mpeg", "mpa" => "video/mpeg", "mpe" => "video/mpeg", "mpeg" => "video/mpeg", "mpg" => "video/mpeg", "mpp" => "application/vnd.ms-project", "mpv2" => "video/mpeg", "ms" => "application/x-troff-ms", "mvb" => "application/x-msmediaview", "nws" => "message/rfc822", "oda" => "application/oda", "p10" => "application/pkcs10", "p12" => "application/x-pkcs12", "p7b" => "application/x-pkcs7-certificates", "p7c" => "application/x-pkcs7-mime", "p7m" => "application/x-pkcs7-mime", "p7r" => "application/x-pkcs7-certreqresp", "p7s" => "application/x-pkcs7-signature", "pbm" => "image/x-portable-bitmap", "pdf" => "application/pdf", "pfx" => "application/x-pkcs12", "pgm" => "image/x-portable-graymap", "pko" => "application/ynd.ms-pkipko", "pma" => "application/x-perfmon", "pmc" => "application/x-perfmon", "pml" => "application/x-perfmon", "pmr" => "application/x-perfmon", "pmw" => "application/x-perfmon", "pnm" => "image/x-portable-anymap", "pot" => "application/vnd.ms-powerpoint", "ppm" => "image/x-portable-pixmap", "pps" => "application/vnd.ms-powerpoint", "ppt" => "application/vnd.ms-powerpoint", "prf" => "application/pics-rules", "ps" => "application/postscript", "pub" => "application/x-mspublisher", "qt" => "video/quicktime", "ra" => "audio/x-pn-realaudio", "ram" => "audio/x-pn-realaudio", "ras" => "image/x-cmu-raster", "rgb" => "image/x-rgb", "rmi" => "audio/mid", "roff" => "application/x-troff", "rtf" => "application/rtf", "rtx" => "text/richtext", "scd" => "application/x-msschedule", "sct" => "text/scriptlet", "setpay" => "application/set-payment-initiation", "setreg" => "application/set-registration-initiation", "sh" => "application/x-sh", "shar" => "application/x-shar", "sit" => "application/x-stuffit", "snd" => "audio/basic", "spc" => "application/x-pkcs7-certificates", "spl" => "application/futuresplash", "src" => "application/x-wais-source", "sst" => "application/vnd.ms-pkicertstore", "stl" => "application/vnd.ms-pkistl", "stm" => "text/html", "svg" => "image/svg+xml", "sv4cpio" => "application/x-sv4cpio", "sv4crc" => "application/x-sv4crc", "t" => "application/x-troff", "tar" => "application/x-tar", "tcl" => "application/x-tcl", "tex" => "application/x-tex", "texi" => "application/x-texinfo", "texinfo" => "application/x-texinfo", "tgz" => "application/x-compressed", "tif" => "image/tiff", "tiff" => "image/tiff", "tr" => "application/x-troff", "trm" => "application/x-msterminal", "tsv" => "text/tab-separated-values", "txt" => "text/plain", "uls" => "text/iuls", "ustar" => "application/x-ustar", "vcf" => "text/x-vcard", "vrml" => "x-world/x-vrml", "wav" => "audio/x-wav", "wcm" => "application/vnd.ms-works", "wdb" => "application/vnd.ms-works", "wks" => "application/vnd.ms-works", "wmf" => "application/x-msmetafile", "wps" => "application/vnd.ms-works", "wri" => "application/x-mswrite", "wrl" => "x-world/x-vrml", "wrz" => "x-world/x-vrml", "xaf" => "x-world/x-vrml", "xbm" => "image/x-xbitmap", "xla" => "application/vnd.ms-excel", "xlc" => "application/vnd.ms-excel", "xlm" => "application/vnd.ms-excel", "xls" => "application/vnd.ms-excel", "xlt" => "application/vnd.ms-excel", "xlw" => "application/vnd.ms-excel", "xof" => "x-world/x-vrml", "xpm" => "image/x-xpixmap", "xwd" => "image/x-xwindowdump", "z" => "application/x-compress", "zip" => "application/zip" ); public function __construct($file) { if( file_exists($file) ) { $this-> filePath = $file; $this-> data = file_get_contents($file); }else{ throw new Exception ('File does not exists'); } } public function __toString() { return (string )$this-> data; } public function __call($func, $arg) { if( preg_match('/is(.*?)/U', $func, $match) ) { $match[ 1] = strtolower($match[ 1] ); $ext = $this-> fetchFileExt(); if( array_key_exists($match[ 1], $this-> is) && in_array($ext, $this-> is[ $match[ 1]] ) ) { if( isset($arg[ 0] ) && $arg[ 0] ) { return $ext; } return true; } return false; } } public function save () { file_put_contents ($this-> filePath, $this-> data); } public function changeFileName ($to) { $this-> data = str_replace( $this-> fetchFileName(), $to, $this-> data ); } public function fetchFileName () { return basename($this-> filePath); } public function replace ($search, $replace, $regex = false) { if( $regex ) { $this-> data = preg_replace($search, $replace, $this-> data); return; } $this-> data = str_replace($search, $replace); } public function search ($term, $returnNumberOfOcurrences = false ) { if( strstr($this-> data, $term) ) { if( $returnNumberOfOcurrences ) { return count(explode($term, $this-> data))- 1; } return true; } } public function fetchFileType () { $fExt = $this-> fetchFileExt(); foreach( $this-> is as $filetype => $extArray ) { foreach( $extArray as $ext) { if( $ext == $fExt ) { return $filetype; } } } return false; } public function fetchFileExt () { return pathinfo($this-> filePath, PATHINFO_EXTENSION ); } public function returnMimeType () { $ext = $this-> fetchFileExt(); if( array_key_exists($ext, $this-> mimetypes) ) { return $this-> mimetypes[ $ext]; } } public function download ($filename = '') { $mimetype = $this-> returnMimeType(); if( ! empty($mimetype) ) { $filename = ( $filename == '' ) ? basename($this-> filePath) : $filename; header('Content-type: ' . $mimetype); header('Content-Length: ' . strlen($this-> data)); header('Content-Disposition: attachment; filename="' . $filename . '"'); die( $this-> data ); } } public function applyFilter ( Array $filters ) { foreach( $filters as $filter ) { if( function_exists($filter) ) { $this-> data = $filter($this-> data); } } } public function filter ($word, $filterChar = '*') { if( is_string($word) ) { $filter = str_pad($filter, strlen($word), $filterChar); $this-> data = str_replace($word, $filter, $this-> data); }elseif( is_array($word) || is_object($word) ) { foreach( (array)$word as $filter ) { $this-> filter($filter, $filterChar); } } } public function insert ( $find, $toInsert = '' ) { if( is_int($find) && $find <= strlen($this-> data) ) { $fHalf = substr($this-> data, 0, $find); $sHalf = substr($this-> data, $find, strlen($this-> data) - $find); $this-> data = $fHalf . $toInsert . $sHalf; }elseif( is_string($find) && strstr($this-> data, $find)) { $findPos = strpos($this-> data, $find) + strlen($find); $fHalf = substr($this-> data, 0, $findPos); $sHalf = substr($this-> data, $findPos, strlen($this-> data) - $findPos); $this-> data = $fHalf . $toInsert . $sHalf; }elseif( is_array($find) || is_object($find) ) { $find = (array)$find; foreach( $find as $where ) { $this-> insert($where); } } } public function append ($text) { $this-> data .= $text; die($this-> data); return $this; } public function prepend ($text) { $this-> data = $text . $this-> data; return $this; } public function truncate ($maxlength, $truncatefocus) { $newString = trim($this-> data); $lenDifference = strlen($this-> data) - $maxlength; if (strlen($newString) < $maxlength) return $newString; switch($truncatefocus) { case "left": $newString = "..." . trim(substr($newString, $lenDifference)); break; case "right": $newString = trim(substr($newString, 0, (0 - $lenDifference))) . "..."; break; case "middle": case "center": $half = ceil($maxlength/ 2); $fHalf = trim(substr($newString, 0, $half)); $lHalf = trim(substr($newString, (0 - $half))); $newString = $fHalf . "..." . $lHalf; break; } $this-> data = $newString; } public function cutoff ($len, $from, $truncationIndicator = '...') { $dataLength = strlen($this-> data); $lenDiff = $dataLength - $len; switch( $from ) { case 'right': $newString = substr($this-> data, 0, $lenDiff) . $truncationIndicator; break; case 'left': $newString = $truncationIndicator . substr($this-> data, $len, $lenDiff ); break; case 'middle': case 'center': $halfWayPoint = ceil($dataLength/ 2); $lenDiffHalf = ceil($len/ 2); $firstHalf = substr( $this-> data, 0, $halfWayPoint - $lenDiffHalf); $secondHalf = substr($this-> data, $halfWayPoint + $lenDiffHalf, $halfWayPoint - $lenDiffHalf); $newString = $firstHalf . $truncationIndicator . $secondHalf; } $this-> data = $newString; return $this; }}
|