2012-10-29 78 views
3

我正在編寫一個打印彩色線條的程序,我對它的處理越多,發現自己的工作就越多,出現了換行問題。xterm中的換行問題

它是一種用PHP編寫的碼頭,這裏是提示:

$return = readline("\033[44m\033[1;37m{$this->text}>>\033[0m "); 

,並通過歷史滾動,非打印字符的一切是一場浩劫。

如果我嘗試添加逃逸

$return = readline("\[\033[44m\033[1;37m\]{$this->text}>>\[\033[0m\] "); 

然後將打印托架......即使我添加雙反斜線。

\[\][timer]>>\[\] 

我發現echo -e是同樣的東西,我真的不知道發生了什麼。

最後,如果我修改PS1它工作得很好。

[[email protected] ~]$ export PS1="\[\033[44m\033[1;37m\][timer]>>\[\033[0m\] " 
[timer]>> 

我在這裏錯過了什麼?

編輯:着色/顯示不是問題。問題是,bash將有換行的問題時,不可見的字符打印沒有逃脫...當我加入他們逃離印在所有情況下,但PS1純文本,我不知道有什麼區別,如何讓它在PHP中工作。

回答

0

PHP 1.PHP

[TIMER] >>

<?php 

$return = readline("\033[44m\033[1;37m[TIMER]>>\033[0m "); 

?> 

下面是對話例如添加

dialog --title "Welcome" --msgbox "\nMY TEST DIALOG \n\nPress <Enter> to continue or <Esc> to cancel." 10 50 
+0

不幸的是,我遇到的問題是不着色或印刷的問題,但換行問題。如果我滾動查看歷史記錄,提示將變爲11個字符。如果我鍵入21個字符,然後按退格鍵,它將開始刪除上一行。這是一個57列寬的控制檯。 –

+0

我想我明白這個問題,即使使用在shell腳本的顏色,一旦線路點擊控制檯結束寬度隨顏色從上面生成的一組新行是誠實的。你有沒有使用對話框我相信它也可以通過php腳本工作 – Vahid

+0

這也不是問題。顏色很好。問題是滾動歷史,文本錯位。例如,如果我運行'列表',然後'簽入',然後向上滾動兩次,這就是我得到的:[計時器] >>簽入列表(這是十個空格之間)和向下滾動讓我[計時器] >>簽入簽入 –