ID: 9437
User Update by: [EMAIL PROTECTED]
Status: Closed
Bug Type: Strings related
Description: Function stripslashes works not correct, as i think

>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("\\\\\\\\\\"); ???


Previous Comments:
---------------------------------------------------------------------------

[2001-03-20 05:51:36] [EMAIL PROTECTED]
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-02-24 13:52:52] [EMAIL PROTECTED]
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 "beginend".

// 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............

?>

---------------------------------------------------------------------------


Full Bug description available at: http://bugs.php.net/?id=9437


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to