35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class Utils
 | 
						|
{
 | 
						|
    public const WORKSPACE_DIR = "workspace";
 | 
						|
 | 
						|
    public static function str2kv(string $str): array
 | 
						|
    {
 | 
						|
        preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r);
 | 
						|
        $a = array_combine($r[1], $r[2]);
 | 
						|
 | 
						|
        foreach ($a as &$v) {
 | 
						|
            if (is_numeric($v)) { // is it a numeric value?
 | 
						|
                if (((int)$v) == ((double)$v)) { // is it an integer?
 | 
						|
                    $v = (int)$v;
 | 
						|
                } else { // is it a float?
 | 
						|
                    $v = (double)$v;
 | 
						|
                }
 | 
						|
            } else if (in_array(strtolower($v), ["true", "false"]) ) { // it's a boolean
 | 
						|
                $v = $v === "true";
 | 
						|
            } else if (str_starts_with($v, '"') && str_ends_with($v, '"')) { // it's a string
 | 
						|
                $v = substr($v, 1, strlen($v) - 2); // strip leading and trailing quotes
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return $a;
 | 
						|
    }
 | 
						|
 | 
						|
    public static function str2a(string $str): array {
 | 
						|
        return explode(",", $str);
 | 
						|
    }
 | 
						|
 | 
						|
    public static function getWorkspaceDir(): string {
 | 
						|
        return getcwd() . DIRECTORY_SEPARATOR . self::WORKSPACE_DIR;
 | 
						|
    }
 | 
						|
} |