That is weird. When I use simpler code such as:
<?php
$encodeTxtArr = range('a', 'z');
$encodeNumArr = range(1,26);
print str_replace($encodeTxtArr,$encodeNumArr,'a');
?>
It prints 1
Here is the code I wrote:
<?php
$encodeTxtArr = array_merge(range('a', 'z'), range('A','Z'), array('!', '@', '[', ']', '(', ')', '.'));
$encodeNumArr = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70);
$str = 'Hello this is a test. This sentence (which is long) has some special characters like [] and @!';
print $str.'<br />';
print str_replace($encodeTxtArr,$encodeNumArr,$str);
?>
Just rearrange the numbers to whatever values you want, add the rest of your special chars, and see how that works?
Here it is on my site:
http://grady.us/temp/test.php