I'm looking to "trim" non-alphanumerics from a string, similar to how trim()
works with whitespace.
Help me convert #str|ng#
to str|ng
.
I can remove trailing non-alphanumerics with:
$string = preg_replace('/\W+$/', '', $string); // converts `#str|ng#` to `#str|ng`
And leading with:
$string = preg_replace('/^\W+/', '', $string); // converts `#str|ng#` to `str|ng#`
But how can I accomplish both at the same time?
Try using a ^\\W+|\\W+$
pattern like this:
$string = preg_replace('/^\W+|\W+$/', '', $string);
This will replace any non-word characters (note this doesn't include underscores) which appear either at the beginning or end of the string. The |
is an alternation, which will match any string which matches either the pattern on the left or the pattern on the right.
If you also need to remove underscores, use a character class like this:
$string = preg_replace('/^[\W_]+|[\W_]+$/', '', $string);
You don't need regex, use trim()
and specify what to trim (it trims whitespace by default):
$string = trim($string, "#");
Docs: http://php.net/trim
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.