Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8103587
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 5, 20262026-06-05T23:35:10+00:00 2026-06-05T23:35:10+00:00

I need to strip any non-alphanumeric characters from the end of strings using PHP’s

  • 0

I need to strip any non-alphanumeric characters from the end of strings using PHP’s preg_replace:

Word One, Two, -, Word One, Two,[space], Word One, Two,, Word One, Two should all become Word One, Two.

I have tried preg_replace('/(.+)\\W+$/', '$1', 'Word One, Two, -'); but this only strips the last non-word character. I also tried '/(.+)\\W*$/' as I assumed this would make it work if 0 or 1 non-word characters are found (as I need) but it then doesn’t match at all. I think I need to make the \W greedy but I’m not sure how. Any ideas? Also, please feel free to explain to me what I am doing wrong so I don’t find myself haunting the SO regex tag 😉

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-05T23:35:11+00:00Added an answer on June 5, 2026 at 11:35 pm

    This is because (.+) eats up all other character, including non-word characters. The regex engine starts matching the string and starts out with all characters in the capturing group. Only then it notices that the \W at the end of the string won’t fit and backs up, tentatively allowing a single character to be matched by the \W. But a single character is all that’s needed to satisfy the \W+, so it just stops and just strips that single character. That’s also the reason why (.+)\W*$ doesn’t work at all, because \W* is content with matching nothing at all.

    Use

    preg_replace('/\\W+$/', '', $foo);
    

    instead. This avoids the problem by just replacing trailing non-word characters without even trying to match something else.

    Another option would be

    preg_replace('/(.+?)\\W+$/', '$1', $foo);
    

    which would use a lazy quantifier (+?) for the capturing group. This quantifier tries satisfying the match while matching as little as possible (as opposed to + which tries to match as much as possible as we saw above). But generally I’d avoid replacing parts of the match by themselves if you can avoid it. To strip things from a string you certainly don’t need to match more than you need to strip.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to strip out any &id=SomeValue from a Url.PathAndQuery. Where SomeValue could be
I've got the following code, and need to strip all non alpha numeric characters.
Writing a file utility to strip out all non-ASCII characters from files. I have
I am trying to strip the first 75 characters from various strings (sentences /
I need to strip out any movies that are not hosted by YouTube from
I need to strip leading spaces from a column in Oracle. I've Googled but
I need to strip all xml tags from an xml document, but keep the
I need to strip out all font tags from a document. When attempting to
Im not proficient in regex at all, but I need to strip IDs from
I need to extract the 10 most frequent words from a text using a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.