PHP Strings
Replacing Substrings
Problem
You want to replace a substring with a different string. For example, you want to obscure all but the last four digits of a credit card number before printing it.
Solution
Example Replacing a substring with substr_replace( )
// Everything from position $start to the end of $old_string // becomes $new_substring
$new_string = substr_replace($old_string,$new_substring,$start);
// $length characters, starting at position $start, become $new_substring
$new_string = substr_replace($old_string,$new_substring,$start,$length);
Discussion
Without the $length argument, substr_replace() replaces everything from $start
to the end of the string. If $length is specified, only that many characters are replaced:
print substr_replace('My pet is a blue dog.','fish.',12);
print substr_replace('My pet is a blue dog.','green',12,4);
$credit_card = '4111 1111 1111 1111';
print substr_replace($credit_card,'xxxx ',0,strlen($credit_card)-4);
My pet is a fish.
My pet is a green dog.
xxxx 1111
If $start is negative, the new substring is placed by counting $start characters from
the end of $old_string, not from the beginning:
print substr_replace('My pet is a blue dog.','fish.',-9);
print substr_replace('My pet is a blue dog.','green',-9,4);
My pet is a fish.
My pet is a green dog.
If $start and $length are 0, the new substring is inserted at the start of $old_string:
print substr_replace('My pet is a blue dog.','Title: ',0,0);
Title: My pet is a blue dog.
The function substr_replace() is useful when you’ve got text that’s too big to display
all at once, and you want to display some of the text with a link to the rest. Example
displays the first 25 characters of a message with an ellipsis after it as a link to a page
that displays more text.
Example Displaying long text with an ellipsis
$r = mysql_query("SELECT id,message FROM messages WHERE id = $id") or die();
$ob = mysql_fetch_object($r);
printf('<a href="more-text.php?id=%d">%s</a>',
$ob->id, substr_replace($ob->message,' ...',25));
The more-text.php page can use the message ID passed in the query string to retrieve the full message and display it.
No comments:
Post a Comment