On Tue, 2010-06-22 at 20:03 -0400, Rick Dwyer wrote: > Hello again list. > > My code for stripping characters is below. I'm hoping to get feedback > as to how rock solid it will provide the desired output under any > circumstance: > > My output must look like this (no quotes): > > "This-is-my-string-with-lots-of-junk-characters-in-it" > > The code with string looks like this: > > $old_string = 'ééééThis is my & $string -- with ƒ > lots˙˙˙of junk characters in it¡™£¢∞§¶•ªºœ∑´®† > ¥¨ˆøπ“‘ååååååß∂ƒ©˙∆˚¬…æ`````````__________'; > > $find = '/[^a-z0-9]/i'; > $replace = ' '; > > $new_string = preg_replace($find, $replace, $old_string); > $new_string = preg_replace("/ {2,}/", "-", $new_string); > $new_string = preg_replace("/ {1,}/", "-", $new_string); > > $new_string = rtrim($new_string, "-"); > $new_string = ltrim($new_string, "-"); > > > echo $new_string; > > Will the logic above capture and remove every non alpha numeric > character and place a SINGLE hyphen between the non contiguous alpha > numeric characters? > > Thanks for the help on this. > > > --Rick > > > On Jun 22, 2010, at 4:52 PM, Rick Dwyer wrote: > > > > > > > On Jun 22, 2010, at 1:41 PM, Ashley Sheridan wrote: > >> > >> It is clean, but as Richard mentioned, it won't handle strings > >> outside of the traditional 128 ASCII range, so accented characters > >> and the like will be converted to an underscore. Also, spaces might > >> become an issue. > >> > >> However, if you are happy that your input won't go beyond the a- > >> z0-9 range, then it should do what you need. > > > > No, actually I'm fairly confident characters outside the 128 range > > are what are causing me problems now. > > > > So I will try Richard's method. > > > > Thanks to all. > > > > --Rick > > > > You can remove the second line of code, as the third one is replacing what line 2 does anyway. Also, instead of a rtrim and ltrim, you can merge the two with a single call to trim, which will work on both ends of the string at once. Thanks, Ash http://www.ashleysheridan.co.uk