PHP filekezelés, stringek, reguláris kifejezések
Filekezelés
Filekezelés <?php!! $data = array(!!! firstname => David,!!! lastname => Bowie!! );!! $json = json_encode($data);!! file_put_contents( filename.txt, $json);!!! $json = file_get_contents( filename.txt );!! $data = json_decode($json, true);!!! unlink( filename.txt ); // törlés!?>
File, Readfile file teljes tartalmának betöltése egy tömbbe soronként $data = file( filename.txt );! foreach($data as $line){!! echo $line. \n ;! }!! readfile( filename.txt ); file teljes tartalmának betöltése egyből az output bufferbe
Output Buffer A kimenetet bufferelheti a php több szinten akár, aminek a kezelését végezhetjük az ob_ függvényekkel.! flush ob_clean ob_end_clean ob_end_flush ob_flush ob_get_clean ob_get_contents ob_start! ob_start(); $strangerobject->callhismethod(); $html = ob_get_clean(); echo(process($html)); Egy nem általunk készített osztály egy objektuma egyből a kimenetre szeretne írni, de azt mi előtte szeretnénk feldolgozni.
The f* words fclose feof fflush fgetc fgetcsv fgets fgetss flock fnmatch fopen fpassthru fputcsv fputs fread fscanf fseek fstat ftell ftruncate fwrite rewind :) $fp = fopen('somefile.txt', 'r');! $data = fgets($fp, 4096);! fseek($fp, 0);! $contents = fread($handle, filesize($fp));! fclose($fp);
The is_* words is_dir is_executable is_file is_link is_readable is_uploaded_file is_writable = is_writeable
The file* words is_file or is_dir file_exists fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype
Fájlrendszer kezelése touch copy mkdir scandir getcwd unlink rename rmdir glob chdir $records = glob( *porn* );! foreach($records as $record){!! if(is_file($record) unlink($record);! } $cwd = getcwd();! chdir( somewhere_else );! @mkdir( some_directory );! chdir($cwd);
Fájlok neve FILE dirname pathinfo realpath $path_parts = pathinfo( FILE );! echo $path_parts['dirname'];! echo $path_parts['basename'];! echo $path_parts['extension'];! echo $path_parts['filename'];
Fájlok beolvasása Az internetről! $csv = file_get_contents( http:// /export.csv ); fopen => readfile, file, file_get_contents
Stringek
Stringek http://www.php.net/manual/en/ref.strings.php addcslashes addslashes bin2hex chop chr chunk_split convert_cyr_string convert_uudecode convert_uuencode count_chars crc32 crypt echo" explode" fprintf get_html_translation_table hebrev hebrevc hex2bin html_entity_decode htmlentities htmlspecialchars_decode htmlspecialchars implode" join lcfirst levenshtein localeconv ltrim md5_file md5 metaphone money_format nl_langinfo nl2br" number_format ord parse_str print printf quoted_printable_decode quoted_printable_encode quotemeta rtrim setlocale sha1_file sha1 similar_text soundex sprintf sscanf str_getcsv str_ireplace str_pad" str_repeat" str_replace" str_rot13 str_shuffle str_split str_word_count strcasecmp strchr strcmp strcoll strcspn strip_tags stripcslashes stripos stripslashes stristr strlen" strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos" strrchr strrev strripos strrpos strspn strstr strtok strtolower" strtoupper" strtr" substr_compare" substr_count substr_replace" substr" trim" ucfirst" ucwords vfprintf vprintf vsprintf wordwrap
Stringek vs $bob = Dylan ;! $hello1= Hello ;! stringek összefűzése. (pont) operátorral $hello2 = $hello1..$bob; // Hello Dylan! $hello3 = Hi, $bob ; // Hi, Dylan! $hello4 = Hi, $bob ; // Hi, $bob Ha a feldolgozó idézőjelek közötti stringben egy változót talál, megpróbálja azt behelyettesíteni. Ellenben aposztrófok között nem tesz ilyet. Utóbbi ezért nyilván gyorsabb, előbbi néha hasznosabb lehet. $link= index.php ;! $html1 = <a href=\ $link\ > ;! $html2 = <a href=.$link. > ;! // <a href= index.php >
Stringek robbantása $string = alfa, béta, gamma, delta ;! $array = explode (,, $string);!! foreach($array as $index=>$item){!! $array[$index] = trim($item);! }!! $string = implode( -, $array);! // alfa-béta-gamma-delta!! echo substr($string, 5, 4); // béta! echo substr($string, 5, -11); // béta! echo substr($string, 16); // delta! echo substr($string, -5); // delta
HTML, mint string htmlspecialchars htmlentities htmlspecialchars_decode html_entities_decode strip_tags $html = file_get_contents( http://index.hu );! $cleanhtml = strip_tags($html, <b><i> );! echo $cleanhtml; Kiszedi a stringből az összes html taget, kivéve a <b> és <i> tageket.
Karakterek ábrázolása
Karakterek ábrázolása Számokat (bit mintákat) szövegként értelmezünk Az egyes számokhoz megjelenítendő szimbólumokat rendelünk. HÜK: Hasamra Ütök Kódolás: 0: a 1: b 2: c Ezt a kódtáblát használva a 012 jelsorozat az az `abc` szót jelenti. Egy byte - egy karakter. Binárisan ábázolva: 00000000 00000001 00000010!!! 0: a 1: b 2: c
ASCII 1 karakter - 7 bit (kibővített készleteknél 8 bit) maximum 255 különböző szimbólum Az alap ASCII-ben 0-31-ig és a 127-es (delete) kód vezérlőkaraktereket jelöl. A többiek (32-126) a megjeleníthető szimbólumok. öüóőúéáűíöüóőúéáűí? äßąůłýýģōůż? Sumér és akkád ékírás???
MB: MultiByte Egy byte minden ismert/lehetséges/használandó szimbólum ábrázolására nem elég. Megoldás? Használjunk többet! Akár 6-ot! Unicode kódolás UTF-8 És tud akkádul! Változó hosszúságú karakterek. Az első 127 kód megfelel az ASCII-nek
PHP MB A PHP stringkezelése byte alapon történik: 00000001 01010000 336: Ő karakter (UTF-8: U+0150 ~ Ő) 1: heading start karakter 80: P karakter Kiírásnál, összefűzésnél bevitelnél nincs probléma: az adat jön, megy a kódolást lelkesen beállítottuk! Műveleteknél azonban, ahol a PHP-nek valamilyen módon értelmeznie kell a stringet, meg kell mondanunk, ha több byte-os karakterkódolást használunk.
PHP mb_ functions mb_check_encoding mb_convert_case mb_convert_encoding mb_convert_kana mb_convert_variables mb_decode_mimeheader mb_decode_numericentity mb_detect_encoding mb_detect_order mb_encode_mimeheader mb_encode_numericentity mb_encoding_aliases mb_ereg_match mb_ereg_replace_callback mb_ereg_replace mb_ereg_search_getpose_name mb_regex_encoding mb_regex_set_options mb_send_mail mb_split mb_strcut mb_strimwidth mb_stripos mb_stristr mb_strlen mb_strpos mb_strrchr mb_strrichr mb_strripos mb_strrpos mb_strstr mb_strtolower mb_strtoupper mb_strwidth mb_substitute_character mb_substr_count mb_substr http://www.php.net/manual/en/ref.mbstring.php
RegExp
RegExp Jelentés: Reguláris kifejezések Minden reguáris kifejezés egy minta/szövegértelmező automata, mely egy reguláris nyelvet ismer fel. ~ eldönti egy szövegről, hogy az a nyelvbe tartozik-e/megfelel-e a mintának A gykorlatban több elképzelés és megvalósítás létezik - POSIX - PCRE
PCRE - Perl Compatible Regular Expressions A PHP is, ahogy a világ nagy része ezt használja. A reguláris kifejezéseket végrehajtó motor optimalizál, a hatékonyság érdekében több féle algoritmussal képes dolgozni - gyors DFA, lassabb visszalépéses megoldás (NFA). fájlnév kiterjesztés vizsgálat: /\.(jpg jpe jpeg png gif gif svg)$/i e-mail cím ellenőrzés: \b[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}\b
PHP RegExp preg_grep preg_match preg_match_all preg_quote preg_replace preg_replace_callback preg_split
Gyors referencia. Any character except newline. \. A period (and so on for \*, \(, \\, etc.) ^ The start of the string. $ The end of the string. \d,\w,\s A digit, word character [A-Za-z0-9_], or whitespace. \D,\W,\S Anything except a digit, word character, or whitespace. [abc] Character a, b, or c. [a-z] a through z. [^abc] Any character except a, b, or c. aa bb Either aa or bb.? Zero or one of the preceding element. * Zero or more of the preceding element. + One or more of the preceding element. {n} Exactly n of the preceding element. {n,} n or more of the preceding element. {m,n} Between m and n of the preceding element.??,*?,+?,{n}?, etc. Same as above, but as few as possible. (expr) Capture expr for use with \1, etc. (?:expr) Non-capturing group. (?=expr) Followed by expr. (?!expr) Not followed by expr. http://regexpal.com/