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

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

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


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 1493 прочитания
Variable променливи
Variable променливите в PHP изглеждат по следния начин: $$var
PHP 1379 прочитания
Получаване на данни от клиента
Никога не се доверявайте на данни, получени от клиент !
PHP 1658 прочитания
Подреждане на записите
Когато искате да променяте подредбата на записите във вашата заявка по време на изпълнене на програмата, използвайте следния трик
SQL 1249 прочитания
Размяна на указатели
За да размените два указателя, използвайте следната функция
C++ 886 прочитания
Звук с JavaScript и Actionscript
Този пример ще покаже как да използвате съвместно JavaScript и Actionscript, за да добавите звук в страниците си
Javascript 439 прочитания
Merge на Microsoft Word документи с Ruby и Office automation
Идеята е да се създаде template с различни части, обозначени като [name] [company] [whatever]. Програмата създава работен документ и заменя всяко срещане на [whatever] със стойност, предавана като параметър.
Ruby 474 прочитания
Добавяне на работни дни към дата
Добавяне и изваждане на брой работни дни към зададена дата
C# 1305 прочитания

Слайдшоу

HR на месеца

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

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

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

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