PHP cli argument parser
При работе с php скриптами из коммандной строки очень часто приходится принимать различные аргументы. Для этих целей используется переменная $argv, в которую записываются все входящие значения.
Однако, область применения этой переменной ограничена, так как туда необходимо помещать все аргументы, довольно сложно добавлять или удалять уже имеющиеся аргументы, так как иногда приходится просматривать всю логику работы скрипта. Чтобы избежать этой проблемы и существуют парсеры аргументов для коммандой строки.
Моим требованиям удовлетворяет эта функция, найденная на просторах php.net. Пример ее работы:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [pfisher ~]$ php test.php --foo --bar=baz ["foo"] => true ["bar"] => "baz" [pfisher ~]$ php test.php -abc ["a"] => true ["b"] => true ["c"] => true [pfisher ~]$ php test.php arg1 arg2 arg3 [0] => "arg1" [1] => "arg2" [2] => "arg3" |
Т.е. логика работы похожа не передачу аргументво в bash скриптах, а также совместима и с обычным argv.
Код функции:
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 | function parseArgs($argv){ array_shift($argv); $out = array(); foreach ($argv as $arg){ if (substr($arg,0,2) == '--'){ $eqPos = strpos($arg,'='); if ($eqPos === false){ $key = substr($arg,2); $out[$key] = isset($out[$key]) ? $out[$key] : true; } else { $key = substr($arg,2,$eqPos-2); $out[$key] = substr($arg,$eqPos+1); } } else if (substr($arg,0,1) == '-'){ if (substr($arg,2,1) == '='){ $key = substr($arg,1,1); $out[$key] = substr($arg,3); } else { $chars = str_split(substr($arg,1)); foreach ($chars as $char){ $key = $char; $out[$key] = isset($out[$key]) ? $out[$key] : true; } } } else { $out[] = $arg; } } return $out; } |
Популярность: 1%
Также почитайте эти записи:
- Удалить последний символ из строки. PHP (2)
- Скрипт для проверки индексации сайтов (22)
- Скрипт для замены php 5.3 на 5.2 (1)
Один комментарий
Оставить комментарий
Поиск по сайту
Облаго тегов
vmware
cisco
блог
почтовый робот
hardware
CodeIgniter
fetchmail
70-290
мое мнение
linux
php
сертификаты
microsoft
Автоматизация
dropbox
profiler
блокнот
IE
flash
Программы
мини заметки о CodeIgniter
FusionCharts
Wordpress
url
рбк
производительность
Горячие клавиши
дизайн
админ
iMacros
кодинг
mysql
helper
Сайты
статистика
Windows xp
jQuery
контент
vps
css
FreeBSD
firefox
Windows 2003
ccna
разработка
Партнеры
Популярные статьи
- Программы для работы с веб- камерами
- Как узнать mac адрес сетевой карты удаленно
- Чтение ext4 разделов в Windows
- Как обжать кабель
- Основные сочетания клавиш Windows XP
- Доступ к виртуальной машине из интернета. Осваиваем port mapping в vmware
- Ubuntu. Как узнать размер папок в директории?
- MySQL: Optimize Table
- Скрипт для проверки индексации сайтов
- Google Chrome или Firefox
А вот мой вариант парсера аргументов:
Ознакомься пожалуйста, возможно тебе пригодится