Command line interpreter: php not interactive must enclose executable statements in <?php ... ?> Variables Do not have to be declared Start with $ Strings: $vars inside double quotes are interpolated while they are literal inside single quotes e.g. $a = 20 "$a" = "20" '$a' = '$a' Put curly braces around vars to indicate where they begin and end e.g.; "{$a}lbs" = "20lbs" Concatenation operator is . casts ints and doubles to strings String comparison is same as numeric comparison: ==, !=, <, >, etc. Useful functions substr($str, position, length) position starts at 0 if position is negative then substr counts from the end of the string if length is omitted then you get the rest of the string starting from position strlen($str): returns the length of the string strpos($str, $substr): returns the position of the first occurrence of $substr or NULL $array = explode(char, $string): returns an array that splits the string based on the delimiter character. It will not collapse white space. For example: $array = explode(" ", "a b") returns the array ("a", "", "b") $array = preg_split("/perl_pattern/", $string): returns an array that splits the string based on the given perl pattern $array = preg_split("/\s+/", a b") returns ("a", "b") explode is faster if you have a simple delimiter Data Types boolean: TRUE/FALSE or true/false gettype($var): returns the type of the variable legitimate types: integer boolean double string array e.g., $a = 6.2; if (gettype($a) == double) ... settype($var, "type"): coerces value of $var to that type e.g., $a = "10" settype($a, "integer"); // $a = 10 Conditionals 2 versions for and/or and/&&: && has higher precedence than and or/||: || has higher precedence than || elseif used instead of "else if" but "else if" works too switch: works with numbers and strings use multiple case statements if multiple cases for the same code use break to avoid executing the next case code default keyword: executes the default code Functions introduced with function keyword use global keyword to declare a variable global within a function e.g., function change_value() { global $value; $value = $value * 2; include keyword include "tax.php"; // includes this file include_once "tax.php"; // guarantees that the code for tax.php // is only loaded once include_once should be placed in front of a file every time it is loaded. include_once checks to see if the file has already been loaded and, if so, does nothing. However, suppose you try something like: include_once "tax.php"; include "tax.php"; In this case tax.php gets reloaded because the second include does not check whether or not tax.php has already been loaded useful numeric functions floor ceil max min rand(min,max): numberes between min/max inclusive printf place ' before padding char for a decimal number e.g., printf("'05d", $a); // pads with 0's instead of spaces sprintf fct returns a string: $a = sprintf(...)' arrays numeric arrays ways to create 1) $names = array("Peter","Quagmire","Joe"); 2) $names[0] = "Peter"; $names[1] = "Quagmire"; 3) $names[] = "Peter"; $names[] = "Quagmire"; array[] = value: appends value to the array associative arrays ways to create 1) $ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34); 2) $ages['Peter'] = "32"; $ages['Quagmire'] = 30; multi-dimensional arrays ways to create 1) $families = array("Griffin"=>array("Peter","Lois","Megan"), "Quagmire"=>array("Glenn","Joe"), "Seuss"=>array("Mary","Nicole","Sue","Frank")); access: $families['Griffin'][0]; useful functions print_r($array): prints the elements of the array in a nice format count($array): number of elements in the array array_key_exists(): Checks if the specified key exists in the array in_array($value, $array): Checks if the designated value is in the array, regardless of whether it is a numeric array or an associative array array_push: Inserts one or more elements to the end of an array e.g., array_push($a, 10, 20, 30); array_shift(): Removes the first element from an array and returns the value of the removed element (not the key) array_unshift: Inserts one or more elements at the front of the array e.g., $a[0] = 10; array_unshift($a, 1, 2, 3); print_r($a); output: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 10 ) asort($array,[sorttype]), arsort($array,[sorttype]): sorts the array based on element value in ascending/descending value. sorttype is optional and may be either the constant SORT_NUMERIC or SORT_STRING ksort($array,[sorttype]), krsort($array,[sorttype]): sorts the array based on key value in ascending/descending value. sorttype is optional and may be either the constant SORT_NUMERIC or SORT_STRING Loops while, for, and do..while are same as C foreach($array as $value): assigns each element of a numeric array or each key of an associative array to $value foreach($array as $key=>$value): binds each value in an associative array to its key. The key and value are assigned to $key and $value Regular Expressions preg_match("/perl pattern/", $string, $array): returns true if the given pattern matches any subexpression in the string --first entry in $array is the full match --remaining entries contain matches for the parenthesized expressions Example: preg_match("/\b(\d{1,2})\/\d{1,2}\/(\d{4})\b/", "brad 2/3/1964 42", $matches); $matches = (2/3/1964, 2, 1964) preg_match_all("/perl pattern/", $string, $array): Searches string for all matches to the given pattern and puts them in $array. --returns the number of matches found --first entry in $array is an array of all matches --remaining entries in $array are arrays containing matches for the first, second, third, etc. parenthesized expressions. Example: preg_match_all("/\b(\d{1,2})\/\d{1,2}\/(\d{4})\b/", "1/3/1964 2/3/1964 9/8/1965 10/28/1930", $matches); $matches Array ( [0] => Array ( [0] => 1/3/1964 [1] => 2/3/1964 [2] => 9/8/1965 [3] => 10/28/1930 ) [1] => Array ( [0] => 1 [1] => 2 [2] => 9 [3] => 10 ) [2] => Array ( [0] => 1964 [1] => 1964 [2] => 1965 [3] => 1930 ) ) preg_replace($pattern, $replacement, $string, $limit): replaces with $replacement all subexpressions in $string that match $pattern --if limit is specified then the number of replaced subexpressions is limited to the value of limit --$string can be an array of strings in which case all strings in $string are searched and replaced --$pattern and $replacement can also be arrays in which case the pattern at $pattern[i] is replaced with $replacement[i] Example: $pattern = "/\b(\d{1,2})\/(\d{1,2})\/\d{2}(\d{2})\b/"; $replace = "$1/$2/$3"; $s = preg_replace($pattern, $replace, "brad 2/3/1964 42"); print($s)."\n"; Result: brad 2/3/64 42 --$0 contains the entire matched pattern --note the lack of delimiters for the replacement pattern Retrieving Form Data $_POST and $_GET contain keyword/value pairs for post and get methods $_REQUEST contains contents of $_GET, $_POST, and $_COOKIE Functions for Validating Form Data empty($var): returns true if variable is 0 or an empty string--useful for checking that text boxes haven't been left blank isset($var): returns true if variable has a value, including 0 or an empty string--useful for checking to ensure that the user entered a value for a form element e.g., isset($_POST['age']) is_numeric($var): returns true if variable is numeric or can be converted to a number. If the value is a string then the entire string must be a number for is_numeric to return true. For example, is_numeric('10cubs') returns false. CGI stuff id attribute: The ID attribute is used to explicitly associate the specific Input tag with a specific LABEL tag. ID attributes are unique within a page. --see ~bvz/www-home/cgi-bin/upload.html for an example label element: Used to provide a label for an input element in the browser Note the following things about the upload.html file: 1) The enctype attribute of the <form> tag specifies which content-type to use when submitting the form. "multipart/form-data" is used when a form requires binary data, like the contents of a file, to be uploaded 2) The type="file" attribute of the <input> tag specifies that the input should be uploaded as a file. When viewed in a browser, there will be a browse-button next to the input field Uploading a File: The $_FILES array is an associative array. --Each entry corresponds to the name of an input tag in the submitted form. --Each entry contains an associative array that has five keys: name: the name of the uploaded file type: the type of the uploaded file size: the size in bytes of the uploaded file tmp_name: the name of the temporary copy of the file stored on the server error: the error code resulting from the file upload entry is an associative array that contans