php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #15380 Invalid Type Conversion In XOR Operand
Submitted: 2002-02-05 04:54 UTC Modified: 2002-02-27 08:17 UTC
From: jury at elkor dot lv Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 4.2.0-dev OS: ANY
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: jury at elkor dot lv
New email:
PHP Version: OS:

 

 [2002-02-05 04:54 UTC] jury at elkor dot lv
Invalid Calculation when you make XOR operation between strings like: "12" ^ "9".

It needs to change type from "String" => "Double"

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-02-05 05:38 UTC] yohgaki@php.net
Verified with 4.2.0-dev. (ZE1)
This bug can make nasty bug in script that is really hard to find.

status = Critical


 [2002-02-05 10:52 UTC] sander@php.net
Some results (exactly the same with ZE1 and 2):
echo "12" ^ "9"; // output: nothing
echo "hello"."12" ^ "9"; // output: Q
echo "hello12" ^ "9"; // output: Q
echo "hello".("12" ^ "9"); // output: hell
Yes, that's hell and not hello!
 [2002-02-27 07:49 UTC] derick@php.net
Not critical, assinging to me to check it out.
 [2002-02-27 08:17 UTC] derick@php.net
Actually, it's not a bug, but an undocumented feature.
What hapens is this:

When both operands are strings, the characters in those strings are XORed like this:

result[0] = string1[0] ^ string2[0]
result[1] = string1[1] ^ string2[1]

For your example this is:
result[0] = '1' ^ '9'

which is:
#8 (the backspace character).

I'm fixing the documentation now.

Derick
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Tue May 06 09:01:28 2025 UTC