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

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

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


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 1356 прочитания
Variable променливи
Variable променливите в PHP изглеждат по следния начин: $$var
PHP 1224 прочитания
Получаване на данни от клиента
Никога не се доверявайте на данни, получени от клиент !
PHP 1511 прочитания
Динамична промяна на колона
Ето как може да промените динамично името на колона от таблица с помощта на системната процедура
MSSQL 876 прочитания
Скрипт за изтегляне на файл с всякакъв размер
<?php// Use PHP to serve files too big for Apache to deliver (>2GB)function serveFile($file){    if (file_exists($file)){        $path_parts =...
PHP 387 прочитания
Зареждане на Wordpress съдържание в променлива
Методът за буфериране на изхода е приложим и в много други ситуации
PHP 413 прочитания
Копиране на видео кадър и преобразуването му в изображение
За да бъде запазено, изображението трябва да е със същия домейн
Javascript 461 прочитания
Layout мениджъри в Java
Различните layout мениджъри в Java
Java 659 прочитания

Слайдшоу

HR на месеца

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

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

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

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