Този сайт използва бисквитки (cookies). Ако желаете можете да научите повече тук. Разбрах
IDG  •  PC World  •  Computerworld  •  CIO  •  CFO  •  Networkworld  •  Дискусии  •  Кариерна зона  •  Събития
computerworld | кариерна зона | Lang Cloud
Computerworld | кариерна зона | programming | PHP

PHP парсер на аргументи

PHP 4749 прочитания


CODE
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
function parse_args($args) {
В  В  $out = array();
В  В  $last_arg = null;
В  В  if(is_string($args)){
В  В  В  В  $args = str_replace(array('=', "\'", '\"'), array('= ', '&#39;', '&#34;'), $args);
В  В  В  В  $args = str_getcsv($args, ' ', '"');
В  В  В  В  $tmp = array();
В  В  В  В  foreach($args as $arg){
В  В  В  В  В  В  if(!empty($arg) && $arg != "&#39;" && $arg != "=" && $arg != " "){
В  В  В  В  В  В  В  В  $tmp[] = str_replace(array('= ', '&#39;', '&#34;'), array('=', "'", '"'), trim($arg));
В  В  В  В  В  В  }
В  В  В  В  }
В  В  В  В  $args = $tmp;
В  В  }
В  В  for($i = 0, $il = sizeof($args); $i < $il; $i++){
В  В  В  В  if( (bool)preg_match("/^--(.+)/", $args[$i], $match) ){
В  В  В  В  В  В  $parts = explode("=", $match[1]);
В  В  В  В  В  В  $key = preg_replace("/[^a-zA-Z0-9-]+/", "", $parts[0]);
В  В  В  В  В  В  if(isset($args[$i+1]) && substr($args[$i],0,2) == '--'){
В  В  В  В  В  В  В  В  $out[$key] = $args[$i+1];
В  В  В  В  В  В  В  В  $i++;
В  В  В  В  В  В  }else if(isset($parts[1])){
В  В  В  В  В  В  В  В  $out[$key] = $parts[1];
В  В  В  В  В  В  }else{
В  В  В  В  В  В  В  В  $out[$key] = true;
В  В  В  В  В  В  } В  В  В  В  В  В 
В  В  В  В  В  В  $last_arg = $key;
В  В  В  В  }else if( (bool)preg_match("/^-([a-zA-Z0-9]+)/", $args[$i], $match) ){
В  В  В  В  В  В  $len = strlen($match[1]);
В  В  В  В  В  В  for( $j = 0, $jl = $len; $j < $jl; $j++ ){
В  В  В  В  В  В  В  В  $key = $match[1]{$j};
В  В  В  В  В  В  В  В  $val = ($args[$i+1]) ? $args[$i+1]: true;
В  В  В  В  В  В  В  В  $out[$key] = ($match[0]{$len} == $match[1]{$j}) ? $val : true;
В  В  В  В  В  В  }
В  В  В  В  В  В  $last_arg = $key;
В  В  В  В  }else if((bool) preg_match("/^([a-zA-Z0-9-]+)$/", $args[$i], $match) ){
В  В  В  В  В  В  $key = $match[0];
В  В  В  В  В  В  $out[$key] = true;
В  В  В  В  В  В  $last_arg = $key;
В  В  В  В  }else if($last_arg !== null) {
В  В  В  В  В  В  $out[$last_arg] = $args[$i];
В  В  В  В  }
В  В  }
В  В  return $out;
}

$str = 'yankee -D "oo\"d l e\'s" -went "2 town 2 buy him-self" -a pony --calledit=" \"macaroonis\' "';
var_dump(parse_args($str));
/* Will output:
array(9) {
В  ["yankee"]=>
В  bool(true)
В  ["D"]=>
В  string(10) "oo"d l e's"
В  ["w"]=>
В  bool(true)
В  ["e"]=>
В  bool(true)
В  ["n"]=>
В  bool(true)
В  ["t"]=>
В  string(21) "2 town 2 buy him-self"
В  ["a"]=>
В  string(4) "pony"
В  ["pony"]=>
В  bool(true)
В  ["calledit"]=>
В  string(12) ""macaroonis'"
}
*/

ICON ICON ICON Tweet it! ICON

Кеширане с PEAR::Cache_lite
PEAR е база с разширения и приложения писани на php. Състои се от структурирани пакети код, предоставени за безплатно ползване. Има изградена система за разпространение на код и поддръжка на пакети.
PHP 1371 прочитания
Variable променливи
Variable променливите в PHP изглеждат по следния начин: $$var
PHP 1247 прочитания
Получаване на данни от клиента
Никога не се доверявайте на данни, получени от клиент !
PHP 1531 прочитания
Прогрес-бар с CSS
.progress-bar {  width: 300px;  height: 24px;  padding: 4px;  background-color: #191919;  border-radius: 16px;  -webkit-border-radius: 16px;  -moz-border-radius:...
CSS 372 прочитания
Универсален инициализатор
Символът 0 е от тип int. Но той може да бъде използван за инициализация на всеки тип, тъй като се преобразува до съответния тип.
C++ 820 прочитания
Как може да намерите родителската директория на зададен файл в Delphi?
Най-лесният начин е да използвате съществуващите RTL функции
Delphi 1140 прочитания
Намиране на home директория
Често при създаване на Swing/GUI приложения трябва да знаете коя е home директорията на потребителя. За щастие това може лесно да се разбере като се обърнете към класа System чрез метода getProperty()
Java 550 прочитания
Въпрос на броя
Как можете да разберете в Java дали даден файл има атрибут hidden?
Java 397 прочитания

Слайдшоу

HR на месеца

Петя Костова, старши бизнес партньор „Човешки ресурси“ VMware за България и за регион EMEA

Петя Костова, старши бизнес партньор „Човешки ресурси“ VMware за България и за регион EMEA

“ Петя Костова, старши бизнес партньор „Човешки ресурси“ VMware за България и за регион EMEA, е лице на рубриката HR of the Month („ЧР на месеца“) през февруари. Инициативата се... ” вижте още »

IT сертификати