PHP

From wiki
Revision as of 22:50, 3 February 2021 by Hdridder (talk | contribs) (→‎Arrays)
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)
sprintf("%7.2f",$float )
Format a number (7 digits, 2 decemals)
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
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

arr1 = ( 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 hash in perl)
count(arr1)
Return the number of elements (length) of an array
foreach($arr1 as $value) { codeblock }
Loop over an indexed array
foreach($arr1 as $key => $value) { codeblock }
Loop over an associative array

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