Re: Strange string stuff -- maybe everything is ending...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



A bit of an example to shed a little light?

function showstring($s='')
{
  printf("String of length %d is %s\n",strlen($s),$s);
  for ($i=0; $i < strlen($s); $i++) {
    printf("s[%d] : '%s' %d ",$i,$s[$i],ord($s[$i]));
  }
  echo PHP_EOL;
}


$s = 'Now we are gone down to the river!';
showstring($s);

$s1 = $s;
$s1[strlen($s1)-1] = '';
showstring($s1);

$s2 = $s;
$s2 = substr($s2,0,-1);
showstring($s2);

Outputs:

String of length 34 is Now we are gone down to the river!
s[0] : 'N' 78 s[1] : 'o' 111 s[2] : 'w' 119 s[3] : ' ' 32 s[4] : 'w'
119 s[5] : 'e' 101 s[6] : ' ' 32 s[7] : 'a' 97 s[8] : 'r' 114 s[9] :
'e' 101 s[10] : ' ' 32 s[11] : 'g' 103 s[12] : 'o' 111 s[13] : 'n' 110
s[14] : 'e' 101 s[15] : ' ' 32 s[16] : 'd' 100 s[17] : 'o' 111 s[18] :
'w' 119 s[19] : 'n' 110 s[20] : ' ' 32 s[21] : 't' 116 s[22] : 'o' 111
s[23] : ' ' 32 s[24] : 't' 116 s[25] : 'h' 104 s[26] : 'e' 101 s[27] :
' ' 32 s[28] : 'r' 114 s[29] : 'i' 105 s[30] : 'v' 118 s[31] : 'e' 101
s[32] : 'r' 114 s[33] : '!' 33
String of length 34 is Now we are gone down to the river
s[0] : 'N' 78 s[1] : 'o' 111 s[2] : 'w' 119 s[3] : ' ' 32 s[4] : 'w'
119 s[5] : 'e' 101 s[6] : ' ' 32 s[7] : 'a' 97 s[8] : 'r' 114 s[9] :
'e' 101 s[10] : ' ' 32 s[11] : 'g' 103 s[12] : 'o' 111 s[13] : 'n' 110
s[14] : 'e' 101 s[15] : ' ' 32 s[16] : 'd' 100 s[17] : 'o' 111 s[18] :
'w' 119 s[19] : 'n' 110 s[20] : ' ' 32 s[21] : 't' 116 s[22] : 'o' 111
s[23] : ' ' 32 s[24] : 't' 116 s[25] : 'h' 104 s[26] : 'e' 101 s[27] :
' ' 32 s[28] : 'r' 114 s[29] : 'i' 105 s[30] : 'v' 118 s[31] : 'e' 101
s[32] : 'r' 114 s[33] : '' 0
String of length 33 is Now we are gone down to the river
s[0] : 'N' 78 s[1] : 'o' 111 s[2] : 'w' 119 s[3] : ' ' 32 s[4] : 'w'
119 s[5] : 'e' 101 s[6] : ' ' 32 s[7] : 'a' 97 s[8] : 'r' 114 s[9] :
'e' 101 s[10] : ' ' 32 s[11] : 'g' 103 s[12] : 'o' 111 s[13] : 'n' 110
s[14] : 'e' 101 s[15] : ' ' 32 s[16] : 'd' 100 s[17] : 'o' 111 s[18] :
'w' 119 s[19] : 'n' 110 s[20] : ' ' 32 s[21] : 't' 116 s[22] : 'o' 111
s[23] : ' ' 32 s[24] : 't' 116 s[25] : 'h' 104 s[26] : 'e' 101 s[27] :
' ' 32 s[28] : 'r' 114 s[29] : 'i' 105 s[30] : 'v' 118 s[31] : 'e' 101
s[32] : 'r' 114

---
Notice how in example 2, where the last character is replaced by a
null character string (''), the actual string length (and subsequently
string "array", if you will) is not shortened. However, in the third
example, it is shortened by substr making a new string.

Not knowing IE really at all, nor it's JS engine, it's entirely
possible that a null character in a string causes it to have problems.

Perhaps of note, in C, a string is terminated by a null byte (i.e. ===
0) which could be why it works in webkit and gecko?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux