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

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

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


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 1786 прочитания
Variable променливи
Variable променливите в PHP изглеждат по следния начин: $$var
PHP 1662 прочитания
Получаване на данни от клиента
Никога не се доверявайте на данни, получени от клиент !
PHP 1894 прочитания
Изчисляване на възраст
Когато искате да изчислите възраст, според подадена рожденна дата, използвайте следната заявка
MySQL 2229 прочитания
Функция за изчисляване на конкретно събитие със зададена вероятност
Задаваната вероятност е в процентен вид
Python 485 прочитания
Случаен генератор на пароли
Когато трябва да генерирате парола за нов потребител на вашата система, използвайте функцията в примера
Visual Basic 1809 прочитания
Споделяне на ресурс
За да откриете коя сесия изчаква за освобождаването на споделен ресурс, изпълнете следния скрипт:
Oracle DB 1109 прочитания
Бисквитки от трети страни, работещи в iframe
За повече информация посетете http://gromitski.com/blog/using-cookies-in-a-facebook-application/
PHP 875 прочитания

Слайдшоу

HR на месеца

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

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

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

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