On Wed, Jan 07, 2009 at 11:11:53PM +0000, Luke Slater wrote: > Hi, > > I'm storing ANSI escape sequences in an array, stored like this: > > $connections[$channel][2] = $info['colour']; > > $info['$colour'] would contain something like \033[33m > > Now, my problem is when I try and print it: > > $pstring = $connections[$channel][2] . $connections[$channel][1] . " " . > $buffer . chr(7); > > It will print as a literal string, actually printing \033[33m to the > screen, so how do I make it work? > > I'm sure I'm missing something fatally simple here. > > Thanks for your help, > > Luke Slater What you're storing is human shorthand for bytes sent to the display. (I'm assuming you're working with the terminal here, not a browser window.) The \033 indicates an octal byte with that value. But when you send it, you're sending each character individually to the screeen. That is '\' is one byte, '0' is the next, '3' the next, etc. That '\033' (and subsequent codes) need to be coded as single bytes and sent bytewise to the terminal. And if your terminal isn't configured to accept ANSI excape codes, it won't work anyway. Your chr(7) is the clue. Your codes, if numeric, need to be converted to integers and given to the chr() function, and output using that function. Try converting some known codes into integers, outputting them via the chr() function, and seeing if the result is what you expected. You may need to use the inverse function, ord(), to get your codes into numeric form. For example, ord('m') will return decimal 109. That's only an example, since you should be able to send single characters to the terminal as is. Paul -- Paul M. Foster -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php