#34409 [Opn]: concatenating a "\n" to a single character string produces incorrect output
| From: | dskiles at docfinity dot com | Date: | Wed, 07 Sep 2005 15:21:05 +0000 |
| Subject: | #34409 [Opn]: concatenating a "\n" to a single character string produces incorrect output | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-84635@lists.php.net to get a copy of this message | ||
ID: 34409
User updated by: dskiles at docfinity dot com
Reported By: dskiles at docfinity dot com
Status: Open
Bug Type: Strings related
Operating System: Windows XP sp2
PHP Version: 5.0.5
New Comment:
Scott,
I noticed that you were using a UNIX shell, so I fired up Cygwin and
tried the same thing on my box.
Cygwin:
a
b
c
d
Windows Shell:
????
Previous Comments:
------------------------------------------------------------------------
[2005-09-07 17:13:33] scottmacvicar at ntlworld dot com
I can't reproduce this.
[scott@devbox www]# php -v
PHP 5.0.6-dev (cli) (built: Sep 5 2005 18:38:22)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies
[scott@devbox www]# php bugtest.php
a
b
c
d
------------------------------------------------------------------------
[2005-09-07 16:28:39] dskiles at docfinity dot com
I tried this with the latest CVS and got the same result.
Single character strings:
????
MultiCharacter strings:
aa
bb
cc
dd
Multiple Newlines:
a
b
c
d
------------------------------------------------------------------------
[2005-09-07 16:17:35] tony2001@php.net
Works just fine here.
Also, line endings on windows are \r\n, not \n.
------------------------------------------------------------------------
[2005-09-07 16:14:56] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
And can't you really come up with a shorter reproduce script?
------------------------------------------------------------------------
[2005-09-07 15:50:30] dskiles at docfinity dot com
Description:
------------
I've been running into a problem where a single character string will
turn into a '?' character when I attempt to concatenate it or
interpolate it with a single "\n" character.
If I use a multi-character string or multiple "\n" characters I don't
get '?' characters anymore.
I'm running this from the console.
Reproduce code:
---------------
<?php
class Environment {
//todo: add persistance
const ALLPAIRS = 0;
const EXHAUSTIVE = 1;
///factors is a multidimenstional associative array.
///the key for the main array is the factor. The value of that key is
a traditional array of values
private $factors;
///FactorMaps are 1:1 concrete representations made out of the
factors
private $factorMaps;
///Mode states how FactorMaps are made from the factors
///Currently, allpairs and exhaustive are supported
private $mode;
public function __construct($mode=Environment::ALLPAIRS) {
$this->factors = array();
$this->factorMaps = array();
$this->mode = $mode;
}
public function addFactorValues($factor, $values) {
if (!isset($this->factors[$factor])) {
$this->factors[$factor] = array();
}
$this->factors[$factor] = array_merge($this->factors[$factor],
$values);
//todo: update the factormaps if any factors were added
}
public function getFactorValues($factor) {
return $this->factors[$factor];
}
}
?>
/////////////////////////////////////////////
<?php
require('../Environment.php');
$enviro = new Environment();
$enviro->addFactorValues('test', array('a', 'b', 'c',
'd'));
foreach($enviro->getFactorValues('test') as $val) {
echo("$val\n");
}
?>
Expected result:
----------------
a
b
c
d
Actual result:
--------------
????
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34409&edit=1