[PHP-DEV] PHP 4.0 Bug #9437 Updated: Function stripslashes works not correct, as i think

2001-03-20 Thread stas

ID: 9437
Updated by: stas
Reported By: [EMAIL PROTECTED]
Old-Status: Open
Status: Closed
Bug Type: Strings related
Assigned To: 
Comments:

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.

Previous Comments:
---

[2001-02-24 13:52:52] [EMAIL PROTECTED]
magic_quotes_gpc = Off | On

?
$text = "begin\\endbr";   // 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

?

---



ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=9437edit=2


-- 
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]




[PHP-DEV] PHP 4.0 Bug #9437 Updated: Function stripslashes works not correct, as i think

2001-03-20 Thread A . Ivanov

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\\endbr";   // 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]