Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中解析仅用空格分隔的特定字符串_Php_String_Parsing - Fatal编程技术网

在PHP中解析仅用空格分隔的特定字符串

在PHP中解析仅用空格分隔的特定字符串,php,string,parsing,Php,String,Parsing,我有一个字符串: 类型1 IP 192.168.0.1授权否允许多个是 所以这个字符串有变量: 类型、IP、授权和允许多个 Type的值是Type1 IP的值是192.168.0.1 授权的值为“否” AllowMultiple的值为Yes 如何仅从该字符串格式解析以获取每个变量的值 例如,从上面的字符串中,我将如何说: $type = value_from_string('Type', $str); 将为您提供一个包含这些碎片的阵列。从这里,您可以了解如何从字符串创建值 $s = "Ty

我有一个字符串:

类型1 IP 192.168.0.1授权否允许多个是

所以这个字符串有变量: 类型、IP、授权和允许多个

  • Type的值是Type1
  • IP的值是192.168.0.1
  • 授权的值为“否”
  • AllowMultiple的值为Yes
如何仅从该字符串格式解析以获取每个变量的值

例如,从上面的字符串中,我将如何说:

$type = value_from_string('Type', $str);
将为您提供一个包含这些碎片的阵列。从这里,您可以了解如何从字符串创建

$s = "Type Type1 IP 192.168.0.1 Authorized No AllowMultiple Yes";

$s = explode(' ', $s);
$arr = [];
for($i=0;$i<count($s);$i+=2) $arr[$s[$i]] = $s[$i+1];

print_r($arr);
如果您想要像
$Type
这样的普通变量,您可能需要添加
提取($arr)

另一种实现方法是删除数组并动态创建变量:

for($i=0;$i<count($s);$i+=2) $$s[$i] = $s[$i+1];
echo $Type;
echo $IP;

用于($i=0;$i用于澄清:字符串格式是否稳定,即
Type
是否始终是第一个组件,或者您是否根据变量
Type
位于子字符串
Type
之后的事实推导出
Type1
是变量
Type
的值这一事实,但对
Type1
可能位于e字符串的nd?字符串的顺序总是一样的。Type1只是一个巧合,里面有“Type”这个词。但是现在一切都好了!非常感谢!我想我可以像第一个人那样使用每秒的倍数。谢谢。
Array
(
    [Type] => Type1
    [IP] => 192.168.0.1
    [Authorized] => No
    [AllowMultiple] => Yes
)
for($i=0;$i<count($s);$i+=2) $$s[$i] = $s[$i+1];
echo $Type;
echo $IP;