On 3/15/2010 5:03 PM, Jim Lucas wrote:
Al wrote:
Anyone have a regex pattern for deleting multiple backslashes e.g., \\\\\\\

I pretty good with regex; but, be damned if I can delete them with
preg_replace()

I've tried "\\\\" as the manual says

preg_replace("/\\\\/", '', $str);

preg_replace("/(\\\\)+/", '', $str);

preg_replace("/\x5C/", '', $str);

preg_replace("/\\x5c/", '', $str);

And lots of others.

stripslashes() and stripcslashes() are limited.




Might I ask, how are the multiple slashes getting generated in the first place?
  Where is the data coming from?

Next question would be: Do you want to completely remove all instances of
multiple backslashes?  Or, do you want to replace all instances of multiple
backslashes with a single backslash?

I would try something like this:

<plaintext><?php

$in = '\\\as\\\\asdf\\\asdf\asdf\\\\\asdf\\\\\asdf';

# to remove all backslashes, us this
echo preg_replace('|[\\\\]+|', '', $in).PHP_EOL;

# to remove all backslashes, us this
echo str_replace('\\', '', $in).PHP_EOL;

# to replace consecutive instances of backslashes with a single backslash
echo preg_replace('|[\\\\]+|', '\\', $in).PHP_EOL;

?>
done!



As I reported earlier, problem was my code was reloading a POST array following the backlash removal. Dumb error on my part.

Re: "Might I ask, how are the multiple slashes getting generated in the first place? Where is the data coming from?" It comes from a client-side editor where users can enter them at will. It is my standard practice to do a good job of protecting users from themselves. I originally just had the usual stripslashes() but found it didn't take care of users adding several.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to