PHP
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Basics
Script language for dynamic web-pages. The syntax and concepts used are similar to Perl
- Limited number of loops
for ($i = 0; $i <= 6; $i++) {
echo "Loop number: $i ";
}
- escapeshellcmd(shellcommand)
- Return the shellcommand with everything that might confuse the shell escaped.
- exec(<cmd>,<outputarray>,<returnvar>)
- Executed <cmd> in the shell, append the command output to he array <outputarray> and set <returnvar> to the returnvalue of the command.
- Also the last line of the command output is returned
- shell_exec(<cmd>)
- Execute <cmd> (output from excapedshellcmd) in the shell, return the command output.
- date("Y-m-d h:i:s")
- Current timestamp (YYYY-mm-dd HH:MM:SS).
- Format "U" is unixtime (seconds since epoch)
- sprintf("%7.2f", $float )
- Format a number (7 digits, 2 decimals)
- number_format($number, 2, '.', ',')
- Format $number with 2 decimals, . as decimal separator and , as thousand separator.
- strpos($string, $search,$start)
- Return position of $search exists in $string. When it is not in, return FALSE. Start searching at position $start (optional). Simple test on strpos -
if (strpos(x,y)) {}
- does not differ between position 0 and FALSE. Test on position 2 or count from the end by setting $start to a negative value (possible since PHP7.1). - str_replace($old, $new, $string)
- Return $string with $old replaced by $new
- trim($string, 'abc')
- Remove characters a, b and c from the start and the end of $string. If no characters are specified all whitespace will be removed.
- round($float,<precision>)
- Round $float to <precision> decimals (0 is default)
Regular expressions
PHP is Perl-like, patterns need delimiters (default is /<pattern>/ )
- preg_match($pattern, $string)
- Return 1 if $pattern exists in $string
- preg_split('/\s*\=+\s*/',$string
- Split $string into an array on a pattern (in this example on white-spaces and equality signs.
- preg_replace('/#.*$/',,$string);
- Replace matches with the pattern in $string (in this example to remove comments from a line)
Files
Almost all you need to know about files. For writing open with 'w' and fwrite($fh,$line)
$fh = fopen($filename, 'r') or die('Unable to open '.$file);
while(!feof($fh)) {
$line = fgets($fh);
}
fclose($fh)
Functions
All variables are local to the function. You have to pass everything it needs, or declare variables as GLOBAL
function func1($arg1, $arg2)
{
GLOBAL $vardeclaredoutside
<codeblock>
return $value;
}
Only one value can be returned but you can return arrays.
function func1()
{
<codeblock>
return array ($value1, $value2);
}
list($val1,$val2) = func1();
Arrays
- arr = []
- (Create) empty array
- arr1 = [val1, val2, val3]
- arr1 = array(val1, val2, val3)
- Create an indexed array. The keys are the range 0..arraylength.
- array_push($arr1,val1,val2)
- Add elements val1 and val2 to the end of $arr1
- $arr1 = array(key1=>val1, key2=>val2, key3=>val3)
- $arr2[key1] = val1
- Create an associative array (like a Perl#Hashes or a Python dictionay)
- count($arr1)
- Return the number of elements (length) of an array
- end($arr1)
- Return the value of the last element in $arr1 and set the pointer to it.
- join(',',$arr1)
- Join elements in arr1 with ',' as separator.
- foreach($arr1 as $value) { codeblock }
- Loop over an indexed array
- foreach($arr1 as $key => $value) { codeblock }
- Loop over an associative array
- unset($arr1[key])
- Remove the key element from $array. Numerical keys will not be reindexed.
Install
On debian (and its derivates)
- apt-get install php-fpm php-mysql
- Install php7 and mysql support
- Fix php security by editing
/etc/php/7.0/fpm/php.ini
- Uncomment line with cgi.fix_pathinfo and set it to 0
php7.4 not in repository
apt -y install lsb-release apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update
sudo apt -y install php7.4
php -v