In this part of the PHP programming tutorial, we will work with string data in more detail.
Strings are the most important data types in computer languages. That is why we dedicate a whole chapter to working with strings in PHP.
The next example will create a string with a heredoc syntax. The heredoc preserves the line breaks and other whitespace (including indentation) in the text. The heredoc is created with <<< followed by a delimiting identifier, followed, starting on the next line, by the text to be quoted, and then closed by the same identifier on its own line. The closing identifier must not be indented. It can only contain alphanumeric characters and underscores, and must start with a non-digit character or underscore.
The
Strings are the most important data types in computer languages. That is why we dedicate a whole chapter to working with strings in PHP.
String literals
A string literal is the notation for representing a string value within the text of a computer program. In PHP programming language, strings can be created with single quotes, double quotes or using the heredoc syntax.<?phpIn this code example, we create two strings and assign them to $a, $b variables. We print them with the echo command. The first string is created with the double quote delimiters, the second one with single quotes.
$a = "PHP";
$b = 'PERL';
echo $a, $b;
?>
The next example will create a string with a heredoc syntax. The heredoc preserves the line breaks and other whitespace (including indentation) in the text. The heredoc is created with <<< followed by a delimiting identifier, followed, starting on the next line, by the text to be quoted, and then closed by the same identifier on its own line. The closing identifier must not be indented. It can only contain alphanumeric characters and underscores, and must start with a non-digit character or underscore.
<?phpThe semicolon is optional.
$str = <<<TEXT
"That is just as I intended." Vautrin said. "You know quite well what
you are about. Good, my little eaglet! You are born to command, you
are strong, you stand firm on your feet, you are game! I respect you."
TEXT;
echo $str, "\n";
?>
echo "PHP " . "language"; # prints PHP languagePHP uses the dot (.) operator to concatenate two strings.
Escape characters
An escape character is a single character designated to invoke an alternative interpretation on immediately subsequent characters in a character sequence. (Wikipedia)php > echo " bbb\raaa";The carriage return \r is a control character for end of line return to beginning of line.
aaabbb
<?phpThe new line is a control character, which begins a new line of text.
echo "Incompatible, it don't matter though\n'cos someone's bound to hear my cry\n";
echo "Speak out if you do\nYou're not easy to find\n";
?>
$ php strophe.php
Incompatible, it don't matter though
'cos someone's bound to hear my cry
Speak out if you do
You're not easy to find
echo "Towering\tinferno"; # Towering infernoThe horizontal tab puts a space between text.
"Johnie's dog"Single and double quotes can be nested. Or in case we use only single quotes, we can use the backslash to escape the default meaning of a single quote.
'Johnie\'s dog'
<?phpIn this example, we have a multiline text, which includes direct speech. The double quotes are escaped with the backslash character.
$text = "
\"That is just as I intended.\" Vautrin said. \"You know quite well what
you are about. Good, my little eaglet! You are born to command, you
are strong, you stand firm on your feet, you are game! I respect you.\"
";
echo $text;
?>
php > $var = 233;The dollar sign $ has also a special meaning in PHP. It denotes a variable. If a variable is used inside a string, it is interpolated, e.g. the value of the variable is used. To echo a variable name, we escape the $ character \$.
php > echo "$var";
233
php > echo "\$var is $var";
$var is 233
Operations on strings
PHP has a large number of useful useful built-in functions that can be used for working with strings.echo strlen("Eagle"); # prints 5Here we use three functions. The
echo strtoupper("Eagle"); # prints EAGLE
echo strtolower("Eagle"); # prints eagle
strlen()
function returns a number of characters in the string. The strtoupper()
converts characters to uppercase letters, the strtolower()
converts characters to lowercase letters. <?phpIn our example, we have a string sentence. We calculate the absolute number of characters, number of alphabetic characters, digits and spaces in the sentence. To do this, we use functions:
$sentence = "There are 22 apples";
$alphas = 0;
$digits = 0;
$spaces = 0;
$length = strlen($sentence);
for ($i = 0; $i < $length; $i++)
{
$c = $sentence[$i];
if (ctype_alpha($c)) $alphas++;
if (ctype_digit($c)) $digits++;
if (ctype_space($c)) $spaces++;
}
echo "There are $length characters.\n";
echo "There are $alphas alphabetic characters.\n";
echo "There are $digits digits.\n";
echo "There are $spaces spaces.\n";
?>
strlen()
, ctype_alpha()
, ctype_digit()
and ctype_space()
. $ php letters.phpNext, we cover the
There are 19 characters.
There are 14 alphabetic characters.
There are 2 digits.
There are 3 spaces.
substr()
function. echo substr("PHP language", 0, 3); # prints PHPThe function returns a part of a string. The first parameter is the specified string. The second parameter is the start of the substring. The third parameter is optional. It is the length of the returned substring. Default is to the end of the string.
echo substr("PHP language", -8); # prints language
The
str_repeat()
function repeats a string a specified number of times. <?phpWe use the str_repeat() function to create two lines of the # character.
echo str_repeat("#", 18);
echo "\nProject Neurea\n";
echo "Priority high\n";
echo "Security maximum\n";
echo str_repeat("#", 18);
echo "\n";
?>
$ php repeat.phpIn the next example, we will randomly modify a string.
##################
Project Neurea
Priority high
Security maximum
##################
<?phpThe
$string = "ZetCode";
echo str_shuffle($string), "\n";
echo str_shuffle($string), "\n";
echo str_shuffle($string), "\n";
echo str_shuffle($string), "\n";
echo str_shuffle($string), "\n";
echo str_shuffle($string), "\n";
echo str_shuffle($string), "\n";
?>
str_shuffle()
randomly shuffles a string. $ php shuffle.phpThe
CteZeod
teZCdeo
ZteoCed
odCteZe
oCdetZe
eedtCZo
edCetoZ
explode()
function is used to split a string into parts. It returns an array of split string parts. <?phpWe have two sentences. Each sentence is ended with a full stop.
$text = "Rastignac heard him in dazed bewilderment;
he could not find a word in reply. Just then Goriot
came in, and Bianchon and a few of the
boarders likewise appeared.";
$sentences = explode(".", $text);
echo $sentences[0];
echo $sentences[1];
?>
$sentences = explode(".", $text);Here we split the text with the explode() function. The function will cut a string into pieces, whenever it finds the dot (.) character.
<?phpWe concatenate strings with the dot operator.
echo "Ajax Amsterdam" . " - " . "Inter Milano " . "2:3\n";
echo "Real Madridi" . " - " . "AC Milano " . "3:3\n";
echo "Dortmund" . " - " . "Sparta Praha ". "2:1\n";
?>
$ php teams1.phpThe output does not look very good. We will change it so that it looks better.
Ajax Amsterdam - Inter Milano 2:3
Real Madridi - AC Milano 3:3
Dortmund - Sparta Praha 2:1
<?phpWe improve the output format with the
$teams = array(
array("Ajax Amsterdam", "Inter Milano"),
array("Real Madrid", "AC Milano"),
array("Dortmund", "Sparta Praha")
);
$results = array("2:3", "3:3", "2:1");
$i = 0;
foreach ($teams as $team) {
echo str_pad($team[0], 14);
echo str_pad("-", 3, " ", STR_PAD_BOTH);
echo str_pad($team[1], 14);
echo str_pad($results[$i], 3, " ", STR_PAD_LEFT);
echo "\n";
$i++;
}
?>
str_pad()
function. It adds a specified string (in our case a space) to the left of the string, to the right or to both sides. $ php teams2.phpWe manage to give a more nicely formatted output.
Ajax Amsterdam - Inter Milano 2:3
Real Madrid - AC Milano 3:3
Dortmund - Sparta Praha 2:1
String formatting
String formatting or string interpolation is dynamic putting of various values into a string.<?phpWe use the %d formatting specifier. The d character says, we are expecting an integer. After the string, we put a modulo operator and an argument. In this case an integer value.
printf("There are %d oranges and %d apples in the basket.\n", 12, 32);
?>
$ php fruits.phpIn the next example, we will interpolate a float and a string value.
There are 12 oranges and 32 apples in the basket.
<?phpThe formatting specifier for a float value is %f and for a string %s.
printf("Height: %f %s\n", 172.3, "cm");
?>
$ php height.phpWe might not like the fact, that the number in the previous example has 6 decimal places by default. We can control the number of the decimal places in the formatting specifier.
Height: 172.300000 cm
<?phpThe decimal point followed by an integer controls the number of decimal places. In our case, the number will have exactly one decimal place.
printf("Height: %.1f %s\n", 172.3, 'cm');
?>
$ php height2.phpThe following example shows other formatting options.
Height: 172.3 cm
<?phpThe first interpolation works with hexadecimal numbers. The x character will format the number in hexadecimal notation. The o character shows the number in octal format. The e character will show the number in scientific format.
# hexadecimal
printf("%x\n", 300);
# octal
printf("%o\n", 300);
# scientific
printf("%e\n", 300000);
?>
$ php formatting.phpThe next example will print three columns of numbers.
12c
454
3.000000e+5
<?phpThe numbers are left justified and the output look terrible.
foreach (range(1,11) as $num) {
echo $num , " ", $num*$num, " ",
$num*$num*$num, "\n";
}
?>
$ php columns.phpTo correct this, we use the width specifier. The width specifier defines the minimal width of the object. If the object is smaller than the width, it is filled with spaces.
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
<?phpNow the output looks OK. 2 says that the first column will be 2 characters wide.
foreach (range(1,11) as $num) {
printf("%2d %3d %4d\n", $num, $num*$num, $num*$num*$num);
}
?>
$ php columns2.phpThis part of the PHP tutorial covered strings.
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
11 121 1331
0 comments:
Post a Comment