| | <?php |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | namespace think\process; |
| |
|
| | class Utils |
| | { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public static function escapeArgument($argument) |
| | { |
| |
|
| | if ('' === $argument) { |
| | return escapeshellarg($argument); |
| | } |
| | $escapedArgument = ''; |
| | $quote = false; |
| | foreach (preg_split('/(")/i', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) { |
| | if ('"' === $part) { |
| | $escapedArgument .= '\\"'; |
| | } elseif (self::isSurroundedBy($part, '%')) { |
| | |
| | $escapedArgument .= '^%"' . substr($part, 1, -1) . '"^%'; |
| | } else { |
| | |
| | if ('\\' === substr($part, -1)) { |
| | $part .= '\\'; |
| | } |
| | $quote = true; |
| | $escapedArgument .= $part; |
| | } |
| | } |
| | if ($quote) { |
| | $escapedArgument = '"' . $escapedArgument . '"'; |
| | } |
| | return $escapedArgument; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | public static function validateInput($caller, $input) |
| | { |
| | if (null !== $input) { |
| | if (is_resource($input)) { |
| | return $input; |
| | } |
| | if (is_scalar($input)) { |
| | return (string) $input; |
| | } |
| | throw new \InvalidArgumentException(sprintf('%s only accepts strings or stream resources.', $caller)); |
| | } |
| | return $input; |
| | } |
| |
|
| | private static function isSurroundedBy($arg, $char) |
| | { |
| | return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1]; |
| | } |
| |
|
| | } |
| |
|