PHP Strings
PHP Strings
A function is a named block of code that performs a specific task, possibly acting
upon a set of values given to it as parameters, and possibly returning a single value
as result.
net2net
Advantages of function
net2net
Calling a Function
Functions in a PHP program can be either built-in or user-defined.
All functions are evaluated in the same way:
$some_value = function_name([parameter, ... ]);
The number of parameters a function requires differs from function to function.
The parameters supplied to the function may be any valid expression and should
be in the specific order expected by the function.
net2net
Calling a Function (Contd.)
$length = strlen("PHP"); // $length is now 3
$result = sin(asin(1));
// $result is the sine of arcsin(1), or 1.0
$result = unlink("functions.txt"); // false if unsuccessful
PHP has a huge array of functions already defined for you to use in your programs
like:
Database access
Creating graphics,
Reading and writing XML files
Grabbing files from remote systems etc.
net2net
Defining a Function
To define a function, use the following syntax:
function [&] function_name([parameter [, ... ]])
{
statement list
}
The statement list can include HTML.
You can declare a PHP function that doesn't contain any PHP code.
<?php function column() { ?>
</td><td>
<?php }?>
The function name should be a valid PHP identifier.
net2net
Defining a Function (Contd.)
Function names are case-insensitive
To return a value from a function, use the return statement.
return expr;
When a return statement is encountered during execution, control reverts to the
calling statement, and the evaluated results of expr will be returned as the value
of the function.
If you define your function with the optional ampersand before the name, the
function returns a reference to the returned data rather than a copy of the data.
<?php
function strcat($left, $right) {
$combined_string = $left.$right;
return $combined_string;
}
$first = "net2net ";
$second = " Computer Education";
echo strcat($first, $second);
?>
net2net
Defining a Function (Contd.)
<?php
function doubler($value)
{
return $value << 1;
}
?>
A pair of 13s is <?php echo doubler(13);?>
net2net
Inner Functions
Inner function may be called from anywhere in your program.
Inner function does not automatically get the outer function's arguments.
Inner function cannot be called until the outer function has been called.
<?php
function outer ($a)
{
function inner ($b)
{
echo "there $b";
}
echo "$a, hello ";
}
outer("well");
inner("reader");
?>
Output: well, hello there reader
net2net
Variable Scope
Functions keep their own sets of variables that are distinct from those of the page
and of other functions.
The variables defined in a function, including its parameters, are not accessible
outside the function, and, by default, variables defined outside a function are not
accessible inside the function.
$a = 3;
function foo(){
$a += 2;
}
foo();
echo $a;
net2net
Variable Scope (Contd.)
The extent to which a variable can be seen in a program is called the scope of the
variable.
Variables created within a function are inside the scope of the function (i.e., have
function-level scope).
Variables created outside of functions have global scope and exist anywhere
outside of those functions and objects.
net2net
Global Variables
If you want a variable in the global scope to be accessible from within a function,
you can use the global keyword.
global var1, var2, ...
$a = 3;
function foo(){
global $a;
$a += 2;
}
foo();
echo $a;
Using global is equivalent to creating a reference to the variable in the $GLOBALS
variable.
global $var;
$var = &$GLOBALS['var'];
net2net
Static Variables
A static variable is shared between all calls to the function and is initialized during
a script's execution only the first time the function is called.
To declare a function variable static, use the static keyword at the variable's first
use.
static var [= value][, ... ];
function counter(){
static $count = 0;
return ++$count;
}
print counter(); // 1
print counter(); // 2
print counter(); // 3
net2net
Passing Parameters by Reference
Passing by reference allows a function to direct access a variable.
To be passed by reference, the argument must be a variable.
Indicate that a particular argument of a function will be passed by reference by
preceding the variable name in the parameter list with an ampersand (&).
function doubler(&$value){
$value <<= 1;
}
$a = 3;
echo $a; // 3
doubler($a);
echo $a; // 6
net2net
Default Parameters
To specify a default parameter, assign the parameter value in the function
declaration.
The value assigned to a parameter as a default value cannot be a complex
expression; it can only be a constant.
function get_preferences($which_preference = "all" )
{
}
net2net
Variable Parameters
A function may require a variable number of arguments.
To declare a function with a variable number of arguments, leave out the
parameter block entirely.
Following functions can be used in the function to retrieve the parameters passed
to it:
func_get_args(): returns an array of all parameters provided to the
function.
func_num_args(): returns the number of parameters provided to the
function.
func_get_arg(): returns a specific argument from the parameters.
$array = func_get_args();
$count = func_num_args();
$value = func_get_arg(argument_number);
net2net
function count_list()
{
$count = 0;
for($i = 0; $i < func_num_args(); $i++)
{
$count += func_get_arg($i);
}
return $count;
}
echo count_list(1, 5, 9);
Note
foo(func_num_args()); // Won’t work
$count = func_num_args();
foo($count); // Works
net2net
Missing Parameters
When you call a function, you can pass any number of arguments to the function.
Any parameters the function expects that are not passed to it remain unset, and a
warning is issued for each of them:
function takes_two($a, $b){
if(isset($a)) { echo " a is set<br>"; }
if(isset($b)) { echo " b is set<br>"; }
}
echo "With two arguments:<br>";
takes_two(1, 2);
echo "With one argument:<br>";
takes_two(1);
Output:
With two arguments:
a is set
b is set
With one argument:
Warning: Missing argument 2 for takes_two() in
/path/to/script.php on line 6
a is set
net2net
Return Values
PHP functions can return only a single value with the return keyword:
function return_one(){
return 42;
}
To return multiple values, return an array:
function return_two(){
return array("Ram", 35);
}
net2net
Return Reference
By default, values are copied out of the function. A function declared with an &
before its name returns a reference (alias) to its return value:
$names = array("Ram", "Seeta", "John", "Mary");
function & find_one($n) {
global $names;
return $names[$n];
}
$person =& find_one(1); // Seeta
$person = "Janaki"; // changes $names[1]
net2net
Variable Functions
As with variable variables, you can call a function based on the value of a variable.
switch($which) {
case 'first':
first();
break;
case 'second':
second();
break;
case 'third':
third();
break;
}
Or
$which();
net2net
Variable Functions (Contd.)
Use the built-in function function_exists() to determine whether a function
exists for the value of the variable before calling the function:
$yes_or_no = function_exists(function_name);
if(function_exists($which)) {
$which();
}
Language constructs such as echo() and isset() cannot be called through
variable functions:
$f = 'echo';
$f('hello, world'); // does not work
net2net
Anonymous Functions
Also called lambda function.
Functions without name.
They are assigned directly to variables and called by the variable name.
Create an anonymous function using create_function().
This function takes two parameters – parameter list and body of the function.
A randomly generated name for the function is returned.
$func_name = create_function(args_string, code_string);
net2net
Quoting String Constants
net2net
Variable Interpolation
Interpolation is the process of replacing variable names in the string with the
values of those variables.
Double quoted string literals or a heredoc are subject to variable interpolation.
There are two ways to interpolate variables into strings.
Simple way:
Just put the variable name in a double-quoted string or heredoc:
$who = 'Ram';
$where = 'Pune';
echo "$who is in $where"; // Ram is in Pune
net2net
Variable Interpolation (Contd.)
Complex way:
Surround the variable being interpolated with curly braces.
This method can be used either to disambiguate or to interpolate array lookups.
$n = 12;
echo "You are the {$n}th person"; // You are the 12th person
Without the curly braces, PHP would try to print the value of the $nth variable.
net2net
Single-Quoted Strings
Single-quoted strings do not interpolate variables.
$name = 'Qadir';
$str = 'Hello, $name'; // single-quoted
echo $str; // Hello, $name
net2net
Single-Quoted Strings (Contd.)
The only escape sequences that work in single-quoted strings are \', which puts a
single quote in a single-quoted string, and \\, which puts a backslash in a single-
quoted string. Any other occurrence of a backslash is interpreted simply as a
backslash:
$name = 'John De\'Costa'; // escaped single quote
echo $name; // John De'Costa
$path = 'C:\\WINDOWS'; // escaped backslash
echo $path; // C:\WINDOWS
$nope = '\n'; // not an escape
echo $nope; // \n
net2net
Double-Quoted Strings
Double-quoted strings interpolate variables and expand many PHP escape sequences.
net2net
Double-Quoted Strings (Contd.)
net2net
Here Documents
net2net
Here Documents (Contd.)
If you are using a heredoc in a more complex expression, you need to continue the
expression on the next line.
printf(<<< Template
%s is %d years old.
Template
, "Ram", 35);
Single and double quotes in a heredoc are passed through:
$dialogue = <<< No_More
"It's not going to happen!" she fumed.
He raised an eyebrow. "Want to bet?"
No_More;
echo $dialogue;
net2net
Here Documents (Contd.)
Whitespace in a heredoc is also preserved:
$ws = <<< Enough
boo
hoo
Enough; // $ws = " boo\n hoo\n";
The newline before the trailing terminator is removed, so these two assignments are
identical:
$s = 'Foo';
$s = <<< End_of_pointless_heredoc
Foo
End_of_pointless_heredoc;
If you want a newline to end your heredoc-quoted string, you need to add an extra
one yourself.
net2net
Printing Strings
net2net
echo
Use echo to put a string into the HTML of a PHP-generated page.
Echo behaves like a function but it is a language construct so that you can omit the
parentheses.
e.g. echo "PHP";
echo("PHP");
To print multiple items separate them with commas:
e.g. echo "First", "second", "third"; // Firstsecondthird
Multiple items with parentheses is parse error:
e.g. echo("Hello", "world"); // this is a parse error
As echo is not a function, you can't use it as part of a larger expression:
e.g. if(echo("test")) { // parse error
echo("it worked!");
}
net2net
print
The print() function sends one value (its argument) to the browser.
It returns true if the string was successfully displayed and false otherwise
e.g. if(!print("Hello, world")) // Hello, world
{
die("you're not listening to me!");
}
net2net
printf
Outputs a string by substituting values into a template (the format string).
The first argument to printf() is the format string.
The remaining arguments are the values to be substituted in.
A % character in the format string indicates a substitution.
Each substitution marker in the template consists of a percent sign (%), possibly
followed by modifiers, and ends with a type specifier.
net2net
The modifiers must appear in the following
A padding specifier: denotes the character to use to pad the results to the
appropriate string size. Specify 0, a space, or any character prefixed with a single
quote (default is spaces).
A sign:
For strings, a minus (-) forces the string to be right-justified (default is left-justify).
For numbers, a plus (+) forces positive numbers to be printed with a leading plus
sign.
The minimum number of characters that this element should contain.
A precision specifier: For floating-point numbers consisting of a period and a number;
this dictates how many decimal digits will be displayed.
net2net
Type Specifiers
• The type specifier tells printf() what type of data is being substituted.
Specifier Meaning
b The argument is an integer and is displayed as a binary number.
c The argument is an integer and is displayed as the character with that value.
d or I The argument is an integer and is displayed as a decimal number.
e, E, or f The argument is a double and is displayed as a floating-point number.
The argument is a double with precision and is displayed as a floating-point
g or G
number.
o The argument is an integer and is displayed as an octal (base-8) number.
s The argument is a string and is displayed as such.
u The argument is an unsigned integer and is displayed as a decimal number.
The argument is an integer and is displayed as a hexadecimal (base-16)
x
number; lowercase letters are used.
The argument is an integer and is displayed as a hexadecimal (base-16)
X
number; uppercase letters are used.
net2net
Example Output
printf('%.2f', 27.452); 27.45
printf('%02d/%02d/%04d',$m,$d,$y); 02/15/2002
net2net
sprintf
The sprintf() function takes the same arguments as printf() but returns the built-up
string instead of printing it.
e.g. $date = sprintf("%02d/%02d/%04d", $month, $day, $year);
net2net
print_r and var_dump
The print_r() displays what is passed to it, rather than casting everything to a
string, as echo and print() do.
Strings and numbers are simply printed.
Arrays appear as parenthesized lists of keys and values, prefaced by word Array:
e.g. $a = array('name' => 'Ram', 'age' => 35, 'wife' => 'Seeta');
print_r($a);
Output:
Array([name] => Ram [age] => 35 [wife] => Seeta)
net2net
print_r and var_dump (Contd.)
When you pass and object to print_r(), you see the word Object, followed by the
initialized properties of the object displayed as an array:
e.g. class P {
var $name = 'Sham';
// ...
}
$p = new P;
print_r($p);
Output: Object([name] => Sham)
net2net
print_r and var_dump (Contd.)
Boolean values and NULL are not meaningfully displayed by print_r():
e.g. print_r(true); // 1
print_r(false); // Blank
print_r(null); // Blank
net2net
print_r and var_dump (Contd.)
The var_dump() function displays any PHP value in a human-readable format:
var_dump(true); // bool(true)
var_dump(false); // bool(false);
var_dump(null); // NULL;
var_dump(array('name' => 'Ram' , 'age' => 35));
// array(2){["name"]=> string(4) "Ram" ["age"]=> int(35)}
class P {
var $name = 'Sham';
// ...
}
$p = new P;
var_dump($p);
// object(p)(1){ ["name"]=> string(4) "Sham"}
net2net
Accessing string characters
The strlen() function returns the number of characters in a string:
$string = 'Hello, world';
$length = strlen($string); // $length is 12
You can use array syntax on a string, to access individual characters:
$string = 'Hello';
for($i=0; $i < strlen($string); $i++)
{
printf("The %dth character is %s\n", $i, $string[$i]);
}
net2net
Removing Whitespace
You can remove leading or trailing whitespace with the trim(), ltrim(), and
rtrim() functions:
$trimmed = trim(string [,charlist]);
$trimmed = ltrim(string [,charlist]);
$trimmed = rtrim(string [,charlist]);
trim() returns a copy of string with whitespace removed from the beginning and
the end.
ltrim() removes whitespace only from the start of the string.
rtrim() removes whitespace only from the end of the string.
The optional charlist argument is a string that specifies characters to strip.
net2net
Removing Whitespace (Contd.)
net2net
Removing Whitespace (Contd.)
$title = " Programming PHP ";
$str_1 = ltrim($title); // $str_1 is "Programming PHP "
$str_2 = rtrim($title); // $str_2 is " Programming PHP"
$str_3 = trim($title); // $str_3 is "Programming PHP"
net2net
Changing Case
$s = "net2net Computer Education";
print(strtolower($s)); // net2net computer education
print(strtoupper($s)); // NET2NET COMPUTER EDUCATION
print(ucfirst($s)); // Net2net Computer Education
$s = "let us learn PHP";
print(ucwords($s)); // Let Us Learn PHP
net2net
Exact Comparison
You can compare two strings for equality with the == and === operators.
The == operator casts non-string operands to strings.
The === operator does not cast, and returns false if the types of the arguments
differ.
$o1 = 3;
$o2 = "3";
if($o1 == $o2) {
echo("== returns true<br>");
}
if($o1 === $o2) {
echo("=== returns true<br>");
}
Output: == returns true
net2net
Exact Comparison (Contd.)
The comparison operators (<, <=, >, >=) also work on strings:
$him = "Ram";
$her = "Seeta";
if ($him < $her) {
print "$him comes before $her in the alphabet.";
}
Output: Ram comes before Seeta in the alphabet
net2net
Exact Comparison (Contd.)
When one argument to a comparison operator is a number, the other argument is
cast to a number.
$string = "PHP Rocks";
$number = 5;
if ($string < $number) {
echo("$string < $number");
}
Output: PHP Rocks < 5
net2net
strcmp & strcasecmp
To compare two strings as strings, casting numbers to strings if necessary, use the
strcmp() function:
$relationship = strcmp(string_1, string_2);
Returns a number:
< 0 if string_1 sorts before string_2
> 0 if string_2 sorts before string_1
= 0 if they are same
$n = strcmp("PHP Rocks", 5); // $n is >0
strcasecmp() converts strings to lowercase before comparing them.
Return values are the same as those for strcmp():
$n = strcasecmp("Ram", "raM"); // $n is 0
net2net
strncmp & strncasecmp
Compares only the first few characters of the string.
$relationship = strncmp(string_1, string_2, len);
$relationship = strncasecmp(string_1, string_2, len);
net2net
strnatcmp & strnatcasecmp
Identifies numeric portions of the strings being compared and sorts the string
parts separately from the numeric parts.
pic1.jpg pic1.jpg
pic5.jpg pic10.jpg
pig10.jpg pic5.jpg
pic50.jpg pic50.jpg
net2net
soundex & metaphone
To test whether two strings are approximately equal.
$soundex_code = soundex($string);
$metaphone_code = metaphone($string);
The metaphone algorithm is generally more accurate.
net2net
$known = "Fred";
$query = "Phred";
if(soundex($known) == soundex($query)){
print "soundex: $known sounds $query<br>";
}
else{
print "soundex: $known doesn't sound like $query<br>";
}
if(metaphone($known) == metaphone($query)){
print "metaphone: $known sounds $query<br>";
}
else{
print "metaphone: $known doesn't sound like $query<br>";
}
Output:
soundex: Fred doesn't sound like Phred
metaphone: Fred sounds like Phred
net2net
similar_text & levenshtein
The similar_text() function returns the number of characters that are
common between two strings.
$in_common = similar_text($str_1, $str_2[, $percentage]);
The levenshtein algorithm calculates the similarity of two strings based on how
many characters you must add, substitute, or remove to make them the same.
$similarity = levenshtein($str_1, $str_2);
$similarity=levenshtein($str_1, $str_2
[, $cost_ins, $cost_rep, $cost_del]);
net2net
$string_1 = "Rasmus Lerdorf";
$string_2 = "Razmus Lehrdorf";
$common = similar_text($string_1, $string_2, $percent);
printf("They have %d chars in common (%.2f%%).",
$common, $percent);
net2net
substr & substr_count
$piece = substr(string, start [, length ]);
$name = "net2net Computer Education";
$a = substr($name, 6, 4); // $a is "t Co"
$b = substr($name, 11); // $b is "uter Education"
net2net
substr_replace
$string = substr_replace(original, new, start [, length ]);
$greeting = "good morning citizen";
$farewell = substr_replace($greeting, "bye", 5,7);
// $farewell is "good bye citizen"
Use a length value of 0 to insert without deleting:
$farewell = substr_replace($farewell, "kind ", 9, 0);
// $farewell is "good bye kind citizen"
Use a replacement of "" to delete without inserting:
$farewell = substr_replace($farewell, "", 8);
// $farewell is "good bye"
net2net
substr_replace (Contd.)
To insert at the beginning of the string:
$farewell = substr_replace($farewell,
"now it's time to say ", 0, 0);
// $farewell is "now it's time to say good bye"'
A negative value for start indicates the number of characters from the end of the
string from which to start the replacement:
$farewell = substr_replace($farewell, "riddance", -3);
// $farewell is "now it's time to say good riddance"
A negative length indicates the number of characters from the end of the string at
which to stop deleting:
$farewell = substr_replace($farewell, "", -8, -5);
// $farewell is "now it's time to say good dance"
net2net
strrev, str_repeat & str_pad
$string = strrev(string);
echo strrev("This is a string"); // "gnirts a si sihT"
net2net
strrev, str_repeat & str_pad (Contd.)
$string = str_pad('Ram', 10, '.');
echo "{$string}35"; // Ram.......35
The optional fourth argument can be either STR_PAD_RIGHT (the default),
STR_PAD_LEFT, or STR_PAD_BOTH (to center).
echo '['.str_pad('Ram', 10, '*', STR_PAD_LEFT).']<br>';
echo '['.str_pad('Ram', 10, '*', STR_PAD_BOTH).']';
Output:
[*******Ram]
[****Ram***]
net2net
explode
$array = explode(separator, string [, limit]);
$input = 'Ram,25,Seeta';
$fields = explode(',', $input);
// $fields is array('Ram', '25', 'Seeta')
$fields = explode(',', $input, 2);
// $fields is array('Ram', '25,Seeta')
net2net
implode
$string = implode(separator, array);
net2net
strtok
$first_chunk = strtok(string, separator);
$next_chunk = strtok(separator);
$string = "Amar,Akbar,Anthony";
$token = strtok($string, ",");
while ($token !== false) {
echo("$token<br>");
$token = strtok(",");
}
Output:
Amar
Akbar
Anthony
net2net
sscanf
$array = sscanf(string, template);
$count = sscanf(string, template, var1, ... );
net2net
strpos & strrpos
$position = strpos(large_string, small_string);
$record = "Ram,Laxman,35,Seeta";
net2net
strstr
$rest = strstr(large_string, small_string);
$record = "Amar,Akbar,35,Anthony";
$rest = strstr($record, ","); // $rest is ",Akbar,35,Anthony "
stristr() Case-insensitive strstr()
strchr() alias for strstr()
strrchr() find last occurrence of a character in a string
net2net
strspn & strcspn
$length = strspn(string, charset);
net2net
parse_url
The parse_url() function returns an array of components of a URL:
$array = parse_url(url);
$bits=parse_url('http://me:[email protected]/cgi-bin/board?user=ram');
print_r($bits);
Output: Array(
[scheme] => http
[host] => ex.com
[user] => me
[pass] => secret
[path] => /cgi-bin/board
[query] => user=ram)
net2net
Regular Expression
• The regular expression functions compare that pattern to another string and checks
whether the string matches the pattern.
• POSIX regular expressions are less powerful, and sometimes slower, than the Perl-
compatible functions, but can be easier to read.
A caret (^) at the beginning of a regular expression indicates that it must match the
beginning of the string:
ereg('^cow', 'Krishan was a cowhand'); // returns false
ereg('^cow', 'cowabunga!'); // returns true
A dollar sign ($) at the end of a regular expression means that it must match the
end of the string:
ereg('cow$', 'Krishna was a cowhand'); // returns false
ereg('cow$', 'I Don't have a cow'); // returns true
Regular Expressions (Contd.)
You can negate a character class with a caret (^) at the start:
ereg('c[^aeiou]t', 'I cut my hand'); // returns false
ereg('c[^aeiou]t', 'Reboot chthon'); // returns true
ereg('c[^aeiou]t', '14ct gold'); // returns false
You can define a range of characters with a hyphen (-).
ereg('[0-9]%', 'we are 25% complete'); // returns true
ereg('[0123456789]%', 'we are 25% over'); // returns true
ereg('[a-z]t', '11th') // returns false
ereg('[a-z]t', 'cat'); // returns true
ereg('[a-z]t', 'PIT'); // returns false
ereg('[a-zA-Z]!', '11!'); // returns false
ereg('[a-zA-Z]!', 'stop!'); // returns true
Alternatives
Quantifier Meaning
? 0 or 1
* 0 or more
+ 1 or more
{n} Exactly n times
If you pass an array as the third argument to ereg function, the array is populated
with any captured substrings:
ereg('([0-9]+)', 'You have 42 magic beans', $captured);
// returns true
The 0th element of the array is set to the entire string being matched against.
The 1st element is the substring that matched the 1st subpattern, and the 2nd
element is the substring that matched the 2nd subpattern, and so on.
ereg('y.*e$', 'Sylvie'); //returns true
ereg('y(.*)e$', 'Sylvie', $a);
//returns true, $a is array('Sylvie', 'lvi')
Replacing
The split() function uses a regular expression to divide a string into smaller
chunks, which are returned as an array.
Optionally, you can say how many chunks to return:
$chunks = split(pattern, string [, limit ]);
$expression = '3*5+i/6-12';
$terms = split('[/+*-]', $expression);
//$terms is array('3','5','i','6','12)
If you specify a limit, the last element of the array holds the rest of the string:
$expression = '3*5+i/6-12';
$terms=split('[/+*-]',$expression,3);
// $terms is array('3','5','i/6-12')
Encoding and Escaping
Because PHP programs often interact with HTML pages, web addresses (URLs), and
databases, there are functions to help you work with those types of data.
HTML, web page addresses, and database commands are all strings, but they each
require different characters to be escaped in different ways.
For example, a space in a web address must be written as %20, while a literal less-
than sign (<) in an HTML document must be written as <.
net2net
Entity-quoting all special characters
Special characters in HTML are represented by entities such as & and <.
The htmlentities() function changes all characters with HTML entity
equivalents into equivalent entities (with the exception of the space character).
This includes the less-than sign (<), the greater-than sign (>), the ampersand (&),
and accented characters.
$string = htmlentities("Einstürzende Neubauten");
echo $string; // Einstürzende Neubauten
The entity-escaped version (ü seen by viewing the source) correctly displays
as ü in the rendered web page. The space has not been turned into .
net2net
Entity-quoting all special characters (contd.)
The htmlentities() function actually takes up to three arguments:
$output = htmlentities(input, quote_style, charset);
The charset parameter, if given, identifies the character set (default is ISO-8859-1)
The quote_style parameter controls whether single and double quotes are turned
into their entity forms.
ENT_COMPAT (the default) converts only double quotes
ENT_QUOTES converts both types of quotes
ENT_NOQUOTES converts neither.
net2net
Entity-quoting all special characters (contd.)
net2net
Entity-quoting only HTML syntax characters
The htmlspecialchars() function converts the smallest set of entities possible
to generate valid HTML.
Ampersands (&) are converted to &.
Double quotes (") are converted to ".
Single quotes (') are converted to '
Less-than signs (<) are converted to <.
Greater-than signs (>) are converted to >.
$output = htmlspecialchars(input, [quote_style, [charset]]);
The quote_style and charset arguments have the same meaning that they do for
htmlentities().
net2net
Removing HTML Tags
The strip_tags() function removes HTML tags from a string:
$input = '<p>Howdy, "Cowboy"</p>';
$output = strip_tags($input);
// $output is 'Howdy, "Cowboy"'
The function may take a second argument that specifies a string of tags to leave in
the string. List only the opening forms of the tags.
$input = 'The <b>bold</b> tags will <i>stay</i><p>';
$output = strip_tags($input, '<b>');
// $output is 'The <b>bold</b> tags will stay'
net2net
SQL
Most database systems require that string literals in your SQL queries be escaped.
Single quotes, double quotes, NUL-bytes, and backslashes need to be preceded by
a backslash.
The addslashes() function adds these slashes, and the stripslashes()
function removes them.
net2net