Changing The Case of A PHP String
Changing The Case of A PHP String
PHP provides a number of functions that enable changes to be made to the case of text
contained in a string. These functions all take the string to be modified as an argument
and return the modifed string. It is important to note that these functions are
nondestructive, that is to say they do not make any change to the original string, they
simply return a completely new string containing the modification leaving the original
string unaltered. The returned string can be assigned to a new variable or used directly in
another function (such as a print or echo):
<?php
$myString = "This is a test string.";
If a change to the original string is required (as opposed to assigning the modified version
to a new variable) the returned string can simply be assigned to the original variable:
<?php
$myString = "This is a test string.";
?>
The PHP string functions designed to change the case of a string are listed below with
descriptions:
PHP provides two functions for the purpose of converting to and from ASCII codes:
chr() - Takes an ASCII code as an argument and retuns the character equivalent.
The following example converts a character to an ASCII code and then reverts it back to
the character:
<?php
$character = 'A';
$asciicode = ord($character);
$char = chr($asciicode);
echo "The character for ASCII code for $asciicode is " . $char . '<br>';
?>
When executed the above code will produce the following output:
Essentially, printf allows you to specify a string and define how particular variables are to
be embedded in that string. fprintf() takes two or more arguments and takes the the
following form:
The String represents the string that is to displayed and contains the formatting specifiers.
The variables specify the variables that are to be substituted in place of the respective
formatting rules.
[edit] PHP printf formatting specifiers
The formatting specifiers begin with a '%' character following by a letter to indicate the
type of variable to be displayed. For example, a string is represented by %s. Optional
rules can be placed between the '%' and the type letter to control formatting.
The following table lists the variable types and the corresponding letter to use when
constructing the formatting rule:
Specifier Description
%% Displays a percent sign
%b A integer represnted as a binary number
%c A character based on the ASCII value
%d A signed decimal number
%e Scientific notation (for example 1.2e+2)
%u An unsigned decimal number
%f A floating-point number
%F Floating-point number
%o An octal number
%s A String
%x Hexadecimal number in lowercase letters
%X Hexadecimal number in uppercase letters
Before we look at the formatting options we first need to see some of the above rules in
action. Let's begin by embedding a string variable into a PHP printf function call:
<?php
$myColor = "Green";
?>
In the above example the %s will be replaced by the value of $myString to create a string
which reads:
We can now consider creating printf statements which combine a number of different
formatting rules:
<?php
$myColor = "Green";
$myNumber = 12;
?>
In the above example the %s will be replaced by the value of $myString and the %d will
be replaced by the decimal value of $myNumber to create a string which reads:
Suppose we wanted to express our lucky number as a hexadecimal value (as all good
software engineers do). All we would need to do is replace the %d with a %x:
Finally we need to look at the formatting options which may be specified after the '%'
character.
'n - Specifies what to use as padding (represented by n). Used in conjunction with
the width specifier and defaults to space. Eg: %'_20s specified that '_' should be
used as padding.
[0-9] Specifies the minimum width to be used by the variable - used in conjuction
with the padding character
<?php
$myColor = "Green";
$myNumber = 12.2089987;
printf("My number is %.2f.", $myNumber);
?>
<?php
$myNumber = 12.2089987;
printf("My number is %'_12f.", $myNumber);
?>
My number is ___12.208999.
<?php
?>
delimiter - the character that is to be used as the break point between array
elements. For example a space character or a comma.
<?php
$myString = "This is a short string";
$myArray = explode($myString);
print_r($myArray);
?>
The above example will result in the following output, which shows each word in the
sentance assigned to an array element:
Array ( [0] => This [1] => is [2] => a [3] => short [4] => string )
The trim() command takes the string to be trimmed as an argument and returns a
modified version of the string. The function is non-destructive, in that it does not modify
the original string.
The following example trims the whitespace from the specified string:
<?php
$string = " This is a string with lots of whitespace
";
$trimmedString = trim($string);
?>
strncmp() - Accepts three arguments - the two strings to be compared and the
number of characters to be included in the comparison. Performs a case-sensitive
comparison of specified number of characters from each string and returns a value
depending on the result of the match.
strncasecmp() - Accepts three arguments - the two strings to be compared and the
number of characters to be included in the comparison. Performs a case-
insensitive comparison of specified number of characters from each string and
returns a value depending on the result of the match.
The string comparison function perform an ASCII based comparison of each character. If
the ASCII codes of the two strings match then the functions return 0. If the first string has
a ASCII value less than the second a negative number is returned. If it is greater a
positive number is returned.
<?php
$myString = "abcdefghijklmn";
$myChar = $myString{1};
?>
2nd Char = b
Similarly the character position can be assigned a new value using the assigment
operator:
<?php
$myString = "abcdefghijklmn";
echo "Before change = $myString";
$myString{1} = 'B';
The strpos() function finds the first occurance a substring and takes two mandatory and
one optional argument. The first argument is the string in which the search should be
performed, and the second the substring for which to search. The optional third argument
tells PHP the point in the string to initiate the search. The function returns boolean false
(0) if no match is found, otherwise it returns the index into the string of the occurence.
Note that if a string begins with the substring there will be some confusion since the
function will return 0, which could equally be interpreted as a failure to find a match. The
key point to understand here is that a failure to find a match will return a boolean zero. A
match starting at position zero will return a numeric 0. To resolve this issue it is best to
ensure that you are comparing like variable types. You may recall from the PHP
Operators chapter about comparing variables to ensure they are of the same type and
value using the === and !== operators. We can use this technique to vefify we are getting
boolean false, and not an integer 0:
<?php
if (strpos("Hello World", "Hello") !== false)
echo 'Match found';
?>
Similarly, the strrpos() function returns the position of the last occurance of the substring.
<?php
?>
The above example will extract the word cat from the string.
The substr_replace() function takes up to four arguments. The first is the source string on
which the replace is to be performed. The second argument is the replacement string. The
third specifies the index offset of the start of the replacement. The optional fourth
argument defines number of characters from the offset point to include in the replacement
(useful if your replacement text is shorter than the original text being replaced).
We can now extend our example to replace some text in our string:
<?php
?>
It is perfectly valid to replace one substring with another of different length. It is also
possible to simply remove a substring by simply passing in an empty replacement string
to the substr_replace() fucntion.
<?php
$myString = "There is a cat in the tree, and I think it is my cat!";
If the search and replacement values are arrays of words then each word in the search
array is replaced by the corresponding value in the replacement array. For example:
<?php
$myString = "There is a cat in the tree, and I think it is my cat!";
A case insensitive search and replace can similarly be performed using the
eregi_replace() function which takes the same arguments as str_replace()