PHP filekezelés, stringek, reguláris kifejezések
Filekezelés
Filekezelés ‘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 unlink
copy mkdir rename rmdir
scandir glob
getcwd 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 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
http://www.php.net/manual/en/ref.strings.php
Stringek “ vs ‘ $bob = ‘Dylan’;! stringek összefűzése . (pont) operátorral $hello1= “Hello”;! $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 = “
”;! $html2 = ‘’;! //
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 echo echo echo
substr($string, substr($string, substr($string, substr($string,
5, 4); // béta! 5, -11); // béta! 16); // delta! -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, ‘’);! echo $cleanHtml; Kiszedi a stringből az összes html taget, kivéve a és 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 Változó hosszúságú karakterek. Az első 127 kód megfelel az
ASCII-nek…
És tud akkádul!
PHP MB A PHP stringkezelése byte alapon történik: 00000001 01010000 1: heading start karakter
336: Ő karakter (UTF-8: U+0150 ~ Ő)
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/