Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
338 views
in Technique[技术] by (71.8m points)

php - How can I remove leading and trailing non-alphanumeric characters

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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); 

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...