Параметры для PHP CLI на Windows - PullRequest
3 голосов
/ 11 марта 2010

В настоящее время я работаю с CLI-интерфейсом PHP для windows, чтобы написать несколько небольших приложений командной строки для настольных компьютеров.

Я хотел знать, возможно ли и как это сделать:

  • Очистить экран (cls будет обычной командой, но exec () не будет работать с ней)
  • Изменить цвет, изменить цвет частей вывода (это уже видели в программах раньше)
  • Увеличьте размер командной строки по горизонтали - вещи быстро становятся нечитаемыми

Возможно ли что-либо из вышеперечисленного из сценария PHP?

Ответы [ 5 ]

2 голосов
/ 28 сентября 2011

В Windows в стандартной командной строке CLI вы не можете выводить в цвете (как в ответе Spudley).

Вы можете изменить размер окна как пользователя, щелкнув правой кнопкой мыши строку заголовка командного окна и выбрав Свойства, затем изменив значения на вкладке Макет. Я не думаю, что можно изменить ширину CLI в PHP.

Вы можете проверить ширину окна CLI в Windows, используя функцию, которую я написал здесь

1 голос
/ 16 июля 2011

См. Справочную страницу PHP для работы с командной строкой

Чтобы ответить непосредственно на каждый из ваших пунктов:

На этой странице есть комментарий, который дает функцию, которая может очистить экран. Я процитирую это здесь для вас:

<?php
  function clearscreen($out = TRUE) {
    $clearscreen = chr(27)."[H".chr(27)."[2J";
    if ($out) print $clearscreen;
    else return $clearscreen;
  }
?>

Есть также другой комментарий, который объясняет, как изменить цвета. Я снова процитирую это:

<?php
echo "\033[31m".$myvar; // red foreground
echo "\033[41m".$myvar; // red background
?>

и для сброса:

<?php
echo "\033[0m";
?>

Вы должны прочитать оставшуюся часть этой страницы, чтобы получить больше предложений о том, как манипулировать CLI.

Единственная часть вашего вопроса, которая осталась без ответа, - это третий пункт. К сожалению, я не верю, что вы сможете это сделать, и я не думаю, что можно изменить размер окна командной строки Windows по горизонтали.

Надеюсь, это поможет.

0 голосов
/ 05 мая 2013

Предоставленный код не будет работать под Windows, потому что PHP под windows что-то делает с командным окном. Я не уверен, что делает PHP, но я написал простую программу Freebasic с двумя строками:

   cls
   end

Затем я скомпилировал его и запустил в обычном окне командной строки. Он очистил экран без каких-либо проблем. Затем я сделал следующее в PHP:

<?php
   echo "This is a test\n";
   system( "cls.exe" );
   exec( "cls.exe" );
   passthru( "cls.exe" );
?>

Когда я запустил программу, она не сделала ничего, кроме строки «Это тест». Таким образом, в PHP происходит какое-то подавление, которое ищет и предотвращает возникновение любой escape-последовательности. Пока это не исправлено в PHP - вы никогда не сможете делать cls или использовать curses, ncurses или любую другую библиотеку. Что нужно сделать, это интегрировать что-то вроде оконных методов FreeBasic как некоторый класс (или, может быть, просто набор процедур на C), который откроет новое окно с помощью методологий языка THAT и использует их для создания текстового окна. Тогда все escape-последовательности будут работать. До тех пор - они не будут.

Что я нахожу странным в этом, так это то, что PHP изначально был написан на Perl, и Perl будет выполнять ncurses на Windows без каких-либо проблем. Perl также позволит всем escape-последовательностям работать. Таким образом, при компиляции Windows выполняется нечто, вызывающее эту проблему.

0 голосов
/ 16 июля 2011

Что касается третьего вопроса, я предлагаю вам установить командную строку по умолчанию на Консоль 2 . Это отличная замена, которая не только позволяет вам использовать любую ширину, которая вам нравится (при условии, что она соответствует вашему экрану), но также поддерживает историю команд, вкладки и некоторые особенности интерфейса пользователя.

0 голосов
/ 11 марта 2010

Я создал небольшой скрипт резервного копирования с PHP, и, насколько я помню, вы можете печатать символы возврата для удаления содержимого. Не совсем идеально, хотя.

Просто погуглите это: http://www.php.net/manual/en/features.commandline.php#77142

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...