49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/php
 | |
| <?php # -*- coding: utf-8 mode: php -*- vim:sw=2:sts=2:et:ai:si:sta:fenc=utf-8
 | |
| 
 | |
| function fix_value($value) {
 | |
|   if ($value === "true") return true;
 | |
|   elseif ($value === "false") return false;
 | |
|   elseif ($value === "null") return null;
 | |
|   else return $value;
 | |
| }
 | |
| function setp(&$array, $keys, $value) {
 | |
|   if (is_array($keys)) $keys = implode(".", $keys);
 | |
|   $keys = explode(".", $keys);
 | |
|   $last = count($keys) - 1;
 | |
|   $i = 0;
 | |
|   if ($array === null) $array = array();
 | |
|   $current =& $array;
 | |
|   foreach ($keys as $key) {
 | |
|     if ($i == $last) break;
 | |
|     if (!array_key_exists($key, $current)) $current[$key] = array();
 | |
|     if (!is_array($current[$key])) $current[$key] = array($current[$key]);
 | |
|     $current =& $current[$key];
 | |
|     $i++;
 | |
|   }
 | |
|   if ($key === "") {
 | |
|     $current[] = $value;
 | |
|   } else {
 | |
|     $current[$key] = $value;
 | |
|   }
 | |
| }
 | |
| 
 | |
| $data = array();
 | |
| $empty = true;
 | |
| for ($i = 1; $i < $argc; $i++) {
 | |
|   $namevalue = $argv[$i];
 | |
|   if (preg_match('/(.*?)=(.*)/', $namevalue, $ms)) {
 | |
|     $name = $ms[1];
 | |
|     $value = fix_value($ms[2]);
 | |
|     setp($data, $name, $value);
 | |
|   } else {
 | |
|     $value = fix_value($namevalue);
 | |
|     $data[] = $value;
 | |
|   }
 | |
|   $empty = false;
 | |
| }
 | |
| 
 | |
| $options = JSON_NUMERIC_CHECK;
 | |
| if ($empty) $options += JSON_FORCE_OBJECT;
 | |
| echo json_encode($data, $options);
 |