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


Reply via email to