Paul M Foster a écrit : > 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 Hi, Interesting and so easy solution, last time I tried it I had to re-initialize my console!! It sure works better and is also much more secured. I'll give it a try on bsd and solaris consoles too (still doesn't work on cygwin) fred -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php