вход по аккаунту

код для вставкиСкачать
PHP: Hypertext Preprocessing
What is PHP?
• PHP is a server-side scripting language designed
specifically for the Web.
• An open source language
• PHP code can be embedded within an HTML page,
which will be executed each time that page is visited.
• Example code (all equivalent):
– Short Style: <? echo “Hello World!”; ?>
– XML Style: <?php echo “Hello World!”; ?>
– Script Style: <SCRIPT LANGUAGE=‘php’> echo “Hello World!”;
– ASP Style: <% echo “Hello World!”; %>
History of PHP
• Created by Rasmus Lerdorf in 1994
• Originally a set of Perl scripts used by Lerdorf
to show off his résumé as well as collect
information on his website, such as the site’s
traffic info.
• Lerdorf later transcribed these Perl scripts into
a set of CGI binaries written in C, and in doing
so, combined it with his own Form Interpreter
to create PHP/FI.
History of PHP
• PHP/FI grew in popularity, but did not become
widely known until two program developers
named Zeev Suraski and Andi Gutmans,
developed a new parser in the summer of
1997, which led to the development of PHP
• The newest version out is PHP 5, which uses
an engine developed by Suraski and Gutmans,
known as the Zend II Engine. (Zend I was used
by PHP 4)
PHP Programming Paradigms
• Uses both procedural and object oriented
• Procedural PHP
– Has been in use since the creation of PHP, its primary
– Allows for easy and quick learning of the PHP language.
– Similar to other popular languages such as Visual Basic,
C++, and Fortran.
PHP Programming Paradigms
• Object Oriented PHP
– Similar to Java, example of an object class:
class BaseClass {
function __construct() {
echo "In BaseClass constructor<br>";
public class BaseClass {
public BaseClass() {
System.out.println("In BaseClass
class SubClass extends BaseClass {
function __construct() {
echo "In SubClass constructor<br>";
class SubClass extends BaseClass {
public SubClass() {
System.out.println("In SubClass constructor\n");
----------------------------------------public class Output {
public static void main(String[] args) {
Object obj;
$obj = new BaseClass();
$obj = new SubClass();
obj = new BaseClass();
obj = new SubClass();
Features of PHP
• Very Efficient – Can serve millions of hits per day.
• Database Integration – Supports many databases, such as mySQL
and Oracle. Also has excellent XML support as of PHP 5.
• Built-in Libraries – Tailored to web development, one can connect
to other network services, send email, work with cookies, generate PDF
documents, and make GIF images on the fly all with a few lines of code.
• It’s Free – Available on
• Easy to Learn – Very similar in syntax to C/C++/Java and Perl.
• Portable – Works on Unix based operating systems, on Mac OS X, as
well as on versions of Microsoft Windows. Your PHP code will often work
without modification on a different system running PHP.
Database Support
• The following is a list of supported databases in PHP
Adabas D
FilePro (read-only) ODBC
Unix dbm
Direct MS-SQL Informix
Oracle (OCI7 and OCI8)
Differences From Java
• Data types are not required in variable
• The $ symbol precedes all variables in PHP
• Constants are declared using the define() method
in PHP: ex. define(“AOL", "something");
• Constructors do not necessarily have to be the
same name as the class name.
• Destructors are used in PHP to remove objects
from memory after they are constructed.
What is PHP Good For?
• It is great for complex web page designs
E-commerce sites with heavy traffic (ex. Amazon)
Complex bulletin boards and forums (ex. phpBB)
Secure websites (ex. Novasis)
Email web hosts (ex. Gmail)
Working with and integrating XML into your webpage
Database management and search (ex. theFaceBook)
How static web pages are processed
HTTP request
Web Browser
HTTP response
Web Server
A simple HTTP request
GET / HTTP/1.1
A simple HTTP response
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 136
Server: Apache/2.2.3
<title>Example Web Page</title>
<p>This is a sample web page</p>
How dynamic web pages are processed with PHP
HTTP request
Web Browser
HTTP response
Web Server
Database Server
MySQL notes
 MySQL is owned and sponsored by MySQL AB, a for-profit
 In 2008, Sun Microsystems acquired MySQL AB.
 In 2009, Oracle Corporation acquired Sun Microsystems.
 In 2009, many of the original developers of MySQL left MySQL
AB and begin working on different forks of the open-source code.
One of the most popular of these forks is MariaDB.
Simple PHP Example
· The HTML file (index.html)
Transitional//EN" ...>
<html xmlns="">
<title>Product Discount Calculator</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<div id="content">
<h1>Product Discount Calculator</h1>
<form action="display_discount.php" method="post">
<div id="data">
<label>Product Description:</label>
<input type="text" name="product_description"/>
<br />
· The HTML file (index.html) (continued)
<label>List Price:</label>
<input type="text" name="list_price"/><br />
<label>Discount Percent:</label>
<input type="text" name="discount_percent"/>%<br />
<div id="buttons">
<input type="submit" value="Calculate Discount" />
<br />
· The CSS file (style.css)
body {
font-family: Arial, Helvetica, sans-serif;
#content {
width: 450px;
margin: 0 auto;
padding: 0px 20px 20px;
background: white;
border: 2px solid navy;
h1 {
color: navy;
label {
width: 10em;
padding-right: 1em;
float: left;
· The CSS file (main.css) (continued)
#data input {
float: left;
width: 15em;
margin-bottom: .5em;
#buttons input {
float: left;
margin-bottom: .5em;
br {
clear: left;
· The PHP file (display_discount.php)
// get the data from the form
$product_description = $_POST['product_description'];
$list_price = $_POST['list_price'];
$discount_percent = $_POST['discount_percent'];
// calculate the discount
$discount = $list_price * $discount_percent * .01;
$discount_price = $list_price - $discount;
// apply formatting to the dollar and percent amounts
$list_price_formatted =
"$".number_format($list_price, 2);
$discount_percent_formatted = $discount_percent."%";
$discount_formatted = "$".number_format($discount, 2);
$discount_price_formatted =
"$".number_format($discount_price, 2);
The PHP file (display_discount.php) (continued)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
<html xmlns="">
<title>Product Discount Calculator</title>
<link rel="stylesheet" type="text/css"
<div id="content">
<h1>Product Discount Calculator</h1>
<label>Product Description:</label>
<span><?php echo $product_description; ?>
</span><br />
<label>List Price:</label>
<span><?php echo $list_price_formatted; ?>
</span><br />
The PHP file (display_discount.php) (continued)
<label>Standard Discount:</label>
<span><?php echo $discount_percent_formatted; ?>
</span><br />
<label>Discount Amount:</label>
<span><?php echo $discount_formatted; ?>
</span><br />
<label>Discount Price:</label>
<span><?php echo $discount_price_formatted; ?>
</span><br />
How to work with
strings and numbers
1. Use any of the functions and techniques that are presented in this
chapter to work with strings.
2. Use any of the functions and techniques that are presented in this
chapter to work with numbers.
Objectives (continued)
1. Describe the way variable substitution is used to assign a string to
a variable.
2. Describe the way PHP escape sequences can be used to insert
special characters into strings and how the htmlentities function
can be used to display special characters correctly in a browser.
3. Describe these terms as they apply to a PHP string: length,
substring, and position.
4. Describe the use of the PHP string functions that return string
lengths or substrings, search for or replace characters in a string,
modify a string, convert between strings and arrays, and compare
two strings.
Objectives (continued)
Knowledge (continued)
5. Describe the PHP is_infinite and is_finite functions, and describe
these PHP constants: PHP_INT_MAX, INF, and -INF.
6. Describe these PHP functions for working with numbers: max,
min, pow, round, sqrt, and mt_rand.
7. Describe the use of the sprintf function for formatting strings and
8. Describe the use of type casting and the use of the intval and
floatval functions.
Assign strings with single quotes
$language = 'PHP';
$message = 'Welcome to ' . $language;
$query = 'SELECT firstName, lastName
FROM Users';
Assign strings with double quotes
Using variable substitution
$language = "PHP";
$message = "Welcome to $language";
Using braces with variable substitution
$count = 12;
$item = "flower";
$message1 = "You bought $count $items.";
$message2 = "You bought $count ${item}s.";
Assign a string with a heredoc
$language = 'PHP';
$message = <<<MESSAGE
The heredoc syntax allows you to build multi-line
strings in $language. Inside, it acts like a
double-quoted string and performs variable substitution.
Assign a string with a nowdoc (supported in 5.3)
$message = <<<'MESSAGE'
The nowdoc syntax also allows you to build multi-line
strings in PHP. However, no variable substitution takes
place inside the nowdoc string. This is similar to
single-quoted strings.
Escape sequences only used in some strings
Escape sequences used in double-quoted strings
and heredocs
Escape sequences with single quotes
$dir = 'C:\\xampp\\php';
$name = 'Mike\'s Music Store';
$quote = "He said, \"It costs \$12.\"";
$comment1 = "This is a\nmulti-line string.";
$comment2 = 'Not a\nmulti-line string.';
The htmlentities function
htmlentities($str [, $quotes])
Examples of the htmlentities function
An example that doesn’t use the htmlentities function
$copyright1 = "\xa9 2010";
echo $copyright1;
An example that uses the htmlentities function
$copyright2 = htmlentities("\xa9 2010");
echo $copyright2;
A URL for a list of all PHP string functions
Functions for working with string length
and substrings
substr($str, $i[, $len])
Code that determines if a string is empty
if (empty($first_name)) {
$message = 'You must enter the first name.';
Code that gets the length of a string
and two substrings
$name = ‘Mike Haggerty’;
$length = strlen($name);
$first_name = substr($name, 0, 4);
$last_name = substr($name, 4);
$last_name = substr($name, -6);
Code that formats a phone number in two ways
$phone = '5545556624';
$part1 = substr($phone, 0, 3);
$part2 = substr($phone, 3, 3);
$part3 = substr($phone, 6);
$format_1 = $part1 . '-' . $part2 . '-' . $part3;
$format_2 = '(' . $part1 . ') ' . $part2 . '-' . $part3;
Code that displays each letter in a string
on a separate line
$input = 'JAN';
for ($i = 0; $i < strlen($input); $i++) {
$vert_str .= substr($input, $i, 1);
$vert_str .= '<br />';
Functions that search a string
strpos($str1, $str2[, $offset])
stripos($str1, $str2[, $offset])
strrpos($str1, $str2[, $offset])
strripos($str1, $str2[, $offset])
Code that searches a string for spaces
$name = 'Martin Van Buren';
$i = strpos($name, ' ');
$i = strpos($name, ' ', 7);
$i = strrpos($name, ' ');
Code that searches a string for a substring
$name = 'Martin Van Buren';
$i = strpos($name, 'Van');
$i = strpos($name, 'van');
$i = stripos($name, 'van');
$i = strripos($name, 'A');
Code that splits a string into two substrings
$name = 'Ray Harris';
$i = strpos($name, ' ');
if ($i === false) {
$message = 'No spaces were found in the name.';
} else {
$first_name = substr($name, 0, $i);
$last_name = substr($name, $i+1);
Functions that replace part of a string
str_replace($str1, $new, $str2)
str_ireplace($str1, $new, $str2)
Code that replaces periods with dashes
$phone = '554.555.6624';
$phone = str_replace('.', '-', $phone);
Code that replaces one string with another string
$message = 'Hello Ray';
$message = str_ireplace('hello', 'Hi', $message);
Functions that modify strings
str_pad($str, $len [, $pad[, $type]])
str_repeat($str, $i)
Code that trims and pads a string
$name = '
ray harris
$name = ltrim($name);
$name = rtrim($name);
$name = str_pad($name, 13);
$name = str_pad($name, 16,
$name = trim($name);
Code that works with capitalization
$name = ucfirst($name);
$name = lcfirst($name);
$name = ucwords($name);
$name = strtolower($name);
$name = strtoupper($name);
Code that changes the sequence of the characters
$name = strrev($name);
$name = str_shuffle($name);
Code that repeats a string
$sep = str_repeat('*', 10);
Functions that convert strings and arrays
explode($sep, $str)
implode($sep, $sa)
How to convert a string to an array
explode('|', $names);
How to convert an array to a string
$names = implode('|', $names);
How to convert an array to a tab-delimited string
$names = implode('\t', $names);
Functions that convert between strings
and ASCII integer values
How to convert an integer value to a character
$char = chr(65);
// $char is 'A'
$char = chr(66);
// $char is 'B'
How to convert a character to an integer value
$val = ord('A');
// $val is 65
$val = ord('B');
// $val is 66
$val = ord('Bike');
// $val is 66
Functions that compare two strings
strcmp($str1, $str2)
strcasecmp($str1, $str2)
strnatcmp($str1, $str2)
strnatcasecmp($str1, $str2)
How a case-sensitive comparison works
$result = strcmp('Anders', 'Zylka');
// $result = -1
$result = strcmp('Anders', 'zylka');
// $result = 1
$result = strcasecmp('Anders', 'zylka'); // $result = -25
How a “natural” number comparison works
$result = strcmp('img06', 'img10');
// $result = -1
$result = strcmp('img6', 'img10');
// $result = 1
$result = strnatcmp('img6', 'img10');
// $result = -1
How to compare two strings
$result = strnatcasecmp($name_1, $name_2);
if ($result < 0) {
echo $name_1 .
} else if ($result
echo $name_1 .
} else {
echo $name_1 .
' before ' . $name_2;
== 0) {
' matches ' . $name_2;
' after ' . $name_2;
How to assign a decimal value (base 10)
$number_1 = 42;
$number_2 = +72;
$number_3 = -13;
$number_4 = -(-39);
$number_5 = --39;
// Error
How to find the maximum
and minimum integer values (base 10)
$max_int = PHP_INT_MAX;
$min_int = -1 * (PHP_INT_MAX + 1);
How to assign an octal value (base 8)
$octal_1 = 0251;
// Must begin with 0
$octal_2 = -0262;
How to assign a hexadecimal value (base 16)
$hex_1 = 0X5F;
// Must begin with 0x or 0X
$hex_2 = 0x4a3b;
// Upper and lower case allowed
How to assign floating-point values
Using normal notation
$float_1 = 3.5;
// Must contain a decimal point
$float_2 = -6.0;
// May be negative
$float_3 = .125;
// Same as 0.125
$float_4 = 1.;
// Same as 1.0
Using exponential notation
$exp_1 = 9.451e15;
// Expands to 9.451 × 1015
$exp_2 = 6.022e+23;
// Plus sign is optional
$exp_3 = 1.602e-19;
// Exponent may be negative
$exp_4 = 9.806e0;
// Exponent may be zero
$exp_5 = -1.759e11;
// Mantissa may be negative
$exp_6 = 3e9;
// Mantissa may be a whole number
Two functions for working with infinity
Working with infinity
Getting an infinite value
// Positive infinity, case-sensitive
// Negative infinity
1e200 * 1e200; // Result is INF
1 + INF;
// Result is INF
1 / INF;
// Result is 0
1 / 0;
// Generates a warning
Testing for an infinite value
$result = 1e200 * 1e200;
if (is_infinite($result)) {
echo('Result was out of range.');
} else {
echo('Result is ' . $result);
URL for a list of all PHP math functions
Common mathematical functions
max($n1, $n2[, $n3 ...])
min($n1, $n2[, $n3 ...])
pow($base, $exp)
round($value[, $precision])
How to round a number
$subtotal = 15.99;
$tax_rate = 0.08;
$tax = round($subtotal * $tax_rate, 2);
How to get the square root of a number
$num1 = 4;
$root = sqrt($num1);
How to work with exponents
$num2 = 5;
$power = pow($num2, 2);
How to calculate the distance between two points
$x1 = 5; $y1 = 4;
$x2 = 2; $y2 = 8;
$distance = sqrt(pow($x1 - $x2, 2) + pow($y1 - $y2, 2));
How to place a maximum bound on a number
$value = 15;
$max_value = 10;
$value = min($max_value, $value);
// 10
Functions that generate random numbers
rand($lo, $hi)
mt_rand($lo, $hi)
How to simulate a random dice roll
$dice = mt_rand(1, 6);
How to generate a random value
between 0 and 1 with 5 decimal places
$number = 0;
$places = 5;
for($i = 0; $i < $places; $i++) {
$number += mt_rand(0,9);
$number /= 10;
echo $number;
How to generate a random password
$password_length = 8;
// Add a symbol to the password
$symbols = '~!@#$%^&*()-_=+[]{};:,.<>?';
$symbol_count = strlen($symbols);
$index = mt_rand(0, $symbol_count - 1);
$password = substr($symbols, $index , 1);
$password .= chr(mt_rand(48, 57));
$password .= chr(mt_rand(65, 90));
// Add lowercase letters to reach the specified length
while (strlen($password) < $password_length) {
$password .= chr(mt_rand(97, 122));
$password = str_shuffle($password);
echo $password;
The sprintf function
sprintf($format, $val1[, val2 ...])
Data type code
The value as a string.
The value as an integer.
The value as a floating-point number.
The value using exponential notation.
An integer value as its corresponding ASCII
An integer value as a binary number.
An integer value as an octal number.
An integer value as a hexadecimal number
A sprintf function that formats two values
$message = sprintf('The book about %s has %d pages.',
'PHP', 800);
How to use sprintf to convert numbers to strings
$s1 = sprintf('It cost %s dollars', 12);
$s2 = sprintf('%s', 4.5);
$s3 = sprintf('%s', 9451000.000000);
$s4 = sprintf('%f', 9.451e6);
$s5 = sprintf('%e', 9451000.000000);
$s6 = sprintf('%c', 65);
$s7 = sprintf('%x', 15);
$s8 = sprintf('%X', 15);
$s9 = sprintf('%s%%', 4.5);
The parts of a format code
Data Type
How to use the optional specifiers
$s1 = sprintf("%+d", 42);
$s2 = sprintf("%+d", -42);
$s3 = sprintf("%10s", 'PHP');
$s4 = sprintf("%-10s", 'PHP');
$s5 = sprintf("%-'*10s", 'PHP');
$s6 = sprintf("%6d", 42);
$s7 = sprintf("%06d", 42);
$s8 = sprintf("%02d-%02d-%04d", 3, 5, 2010);
$s9 = sprintf("%010.2f", 123.456);
How to generate a random HTML color
$color = '#';
for($i = 0; $i < 6; $i++) {
$color .= sprintf("%x", mt_rand(0,15) );
echo $color;
Two functions for converting strings to numbers
How to convert a string to an integer
Using type casting
$value_1 = (int) '42';
$value_2 = (int) '42.5';
$value_3 = (int) '42 miles';
$value_4 = (int) '2,500 feet';
$value_5 = (int) 'miles: 42';
$value_6 = (int) 'miles';
$value_7 = (int) '10000000000';
$value_8 = (int) '042';
$value_9 = (int) '0x42';
Using the intval function
$value = intval('42');
How to convert a string to a floating-point number
Using type casting
$value_1 = (float) '4.2';
$value_2 = (float) '4.2 gallons';
$value_3 = (float) 'gallons';
$value_4 = (float) '1.5e-3';
$value_5 = (float) '1e400';
Using the floatval function
$value = floatval('4.2');
Пожаловаться на содержимое документа