php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9437 Function stripslashes works not correct, as i think
Submitted: 2001-02-24 13:52 UTC Modified: 2001-03-20 06:09 UTC
From: A dot Ivanov at tu-bs dot de Assigned:
Status: Closed Package: Strings related
PHP Version: 4.0.4pl1 OS: FreeBSD 4.2
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
32 + 42 = ?
Subscribe to this entry?

 
 [2001-02-24 13:52 UTC] A dot Ivanov at tu-bs dot de
magic_quotes_gpc = Off | On

<?
$text = "begin\\\\\\\\\\\\\end<br>";	// 13 backslashes 	
echo $text; // will print "begin\\\\\\\end" 7 backslashes 	

// Ok. We think that backslash is a special symbol
// to change the meaning of the next character,
// so in the reality we have 6 backslashes and one
// sequence "\a" but this mean nothing so we
// print "\a" like a plain text.
// It's alright. I have no question.

// then...
$text2 = stripslashes($text);	
echo $text2;
// will print "begin\\\end"  3 backslashes

// WHY ????
// If the backslash is an ordinary symbol
// the function "stripslashes" should remove
// all of it.
// If the backslash is a special symbol, that
// understood by example showed above, then
// this function should remove 6 real slashes
// and echo will print "begin\end".

// So, if i need realy and correct remove all slashes
// from the string i should use following algorithm:

while(preg_match("/\\\/",$str))
$str = stripslashes($str);

// and i find it not so pretty............

?>

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-03-20 05:51 UTC] stas@php.net
The function works right. Meaning of stripslashes is reverse
of addslashes. Addslashes "escapes" the special characters,
i.e. adds slash to each of them. The slash itself is special
charactet, too. Stripslashes removes escapes, as if they
would be added by addslashes, i.e. \\ is converted back to
\. The \e escape is converted back to e. So you get three
\\-s to \ and one \e to e - leaving three slashes, exactly.
 [2001-03-20 06:09 UTC] A dot Ivanov at tu-bs dot de
>The function works right. Meaning of stripslashes is reverse

I don't think so.

>of addslashes. Addslashes "escapes" the special characters,
>i.e. adds slash to each of them. The slash itself is special
>charactet, too. Stripslashes removes escapes, as if they
>would be added by addslashes, i.e. \\ is converted back to
>\. The \e escape is converted back to e. So you get three
>\\-s to \ and one \e to e - leaving three slashes, exactly.

Ok. Say me please, what should i get for
stripslashes("\\\\\\\\\\"); ???

 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Wed Oct 20 19:03:32 2021 UTC