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

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

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


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 1397 прочитания
Variable променливи
Variable променливите в PHP изглеждат по следния начин: $$var
PHP 1276 прочитания
Получаване на данни от клиента
Никога не се доверявайте на данни, получени от клиент !
PHP 1560 прочитания
Дървовидна XLS трансформация
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet exclude-result-prefixes="xsl xsi html xsd" version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.
XML / HTML 454 прочитания
Премахване на водещи празни символи
За да премахнете празните шпации и табулатори в началото на символен низ(whitespace), напишете следния скрипт
Linux/UNIX 865 прочитания
Visual Basic Screen Saver
Visual Basic Screen Saver
Visual Basic 595 прочитания
Показване на изображение по име
Използване на Resources.getIdentifier
Android 384 прочитания
Информация за логически устройства
Ето как по програмен път може да видите информация за логическите устройства на машината:
.NET 787 прочитания

Слайдшоу

HR на месеца

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

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

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

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