PHP string FAQ: How can I strip unwanted characters from a PHP string? (Also asked as, How can I delete unwanted characters from a PHP string?)
Solution
Here’s a quick PHP preg_replace example that takes a given input string, and strips all the characters from the string other than letters (the lowercase letters "a-z", and the uppercase letters "A-Z"):
$res = preg_replace("/[^a-zA-Z]/", "", $string);
If you put this line of code to work in a small PHP script, like this:
<?php $string = "Th*()is 999 is <<>> a ~!@# sample st#$%ring."; $res = preg_replace("/[^a-zA-Z]/", "", $string); echo $res; ?>
and then run that script, you’ll get the following output:
Thisisasamplestring
As you can see, all the other characters have been stripped from the input string, leaving only letters in the resulting string.
Strip all characters but letters and numbers from a PHP string
Next, if we want to allow numbers as well as letters, we can modify our regular expression and preg_replace
code to look like this:
$res = preg_replace("/[^a-zA-Z0-9]/", "", $string);
(I'll leave that output to you.)
Strip all characters but letters, numbers, and whitespace
Finally, if you want to strip all characters from your string other than letters, numbers, and whitespace, this regular expression will do the trick:
$res = preg_replace("/[^a-zA-Z0-9\s]/", "", $string);
(Again, I leave that output as "an exercise for the reader.")
Bonus: A complete PHP string-cleaning function
Before I go, I thought it might help to share the PHP function I wrote recently that led to this blog post.
For my purposes, I needed a PHP function to do the following things:
- Strip all the characters from a string except the alphabet characters [a-zA-Z];
- Limit the resulting string to eight characters;
- Make the remaining characters lowercase.
Given those character-stripping needs, here's the source code for PHP function named cleanString
I created:
<?php // created by alvin alexander, alvinalexander.com // take a given string, // remove all chars except [a-zA-Z], // make the string lowercase, // limit the number of chars to 8. function cleanString($string) { // allow only letters $res = preg_replace("/[^a-zA-Z]/", "", $string); // trim what's left to 8 chars $res = substr($res, 0, 8); // make lowercase $res = strtolower($res); // return return $res; } // test the function echo cleanString("iajaf1237412~!@#$%^&*()-=+_][{};:/.,<>?AAMNBVCXZLKJHG'\""); ?>
I'm still a relative PHP newbie, but I at least know that this code works, so I thought I'd share it here. Hopefully it can help someone else who needs to strip unwanted characters out of a PHP string.