Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I remove leading and trailing non-alphanumeric characters

Tags:

regex

php

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?

like image 685
Ryan Avatar asked Oct 23 '25 18:10

Ryan


1 Answers

Try using a ^\W+|\W+$ pattern like this:

$string = preg_replace('/^\W+|\W+$/', '', $string); 

This will replace any non-alphanumeric 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. The ^ matches the beginning of the chain.

If you also need to remove underscores, use a character class like this:

$string = preg_replace('/^[\W_]+|[\W_]+$/', '', $string); 
like image 136
p.s.w.g Avatar answered Oct 26 '25 07:10

p.s.w.g



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!