Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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_Preg Match All - Fatal编程技术网

我需要在PHP中获得一个值;预赛基本的(我想)

我需要在PHP中获得一个值;预赛基本的(我想),php,preg-match-all,Php,Preg Match All,我正在尝试使用许可证PHP系统… 我想向用户显示他们的许可证状态。 许可证服务器向我提供以下信息: name=Service_Name;nextduedate=2013-02-25;status=Active 我需要像这样分离数据: $name = “Service_Name”; $nextduedate = “2013-02-25”; $status = “Active”; $string = 'name=Service_Name;nextduedate=2013-02-25;status

我正在尝试使用许可证PHP系统… 我想向用户显示他们的许可证状态。 许可证服务器向我提供以下信息:

name=Service_Name;nextduedate=2013-02-25;status=Active
我需要像这样分离数据:

$name = “Service_Name”;
$nextduedate = “2013-02-25”;
$status = “Active”;
$string = 'name=Service_Name;nextduedate=2013-02-25;status=Active';
parse_str(str_replace(';', '&', $string));

echo $name; // Service_Name
echo $nextduedate; // 2013-02-25
echo $status; // Active

我有两天的时间用preg\u match\u解决这个问题,但我不能:(

这可以在没有正则表达式的情况下简单地解决。使用
explode()
将对您有所帮助

$str = "name=Service_Name;nextduedate=2013-02-25;status=Active";

$split = explode(";", $str);
$structure = array();

foreach ($split as $element) {
    $element = explode("=", $element);
    $$element[0] = $element[1];
}

var_dump($name);

尽管我强烈建议您改用数组。比起发明不存在且未显式声明的变量,可读性要高得多。

这可以在不使用正则表达式的情况下简单地解决。使用
explode()
将对您有所帮助

$str = "name=Service_Name;nextduedate=2013-02-25;status=Active";

$split = explode(";", $str);
$structure = array();

foreach ($split as $element) {
    $element = explode("=", $element);
    $$element[0] = $element[1];
}

var_dump($name);

尽管我建议你改用数组。比起发明不存在且未显式声明的变量,可读性要高得多。

如果你将
替换为
&
,这基本上是一个查询字符串。你可以尝试
解析

$name = “Service_Name”;
$nextduedate = “2013-02-25”;
$status = “Active”;
$string = 'name=Service_Name;nextduedate=2013-02-25;status=Active';
parse_str(str_replace(';', '&', $string));

echo $name; // Service_Name
echo $nextduedate; // 2013-02-25
echo $status; // Active

如果将
替换为
&
,则这基本上是一个查询字符串。您可以像这样尝试
parse_str()

$name = “Service_Name”;
$nextduedate = “2013-02-25”;
$status = “Active”;
$string = 'name=Service_Name;nextduedate=2013-02-25;status=Active';
parse_str(str_replace(';', '&', $string));

echo $name; // Service_Name
echo $nextduedate; // 2013-02-25
echo $status; // Active

听起来你只是想把文本沿着分号分成几行,在前面加上一个美元符号,然后加上空格和引号。我不确定用正则表达式一步就能做到这一点(或者至少我不想考虑正则表达式是什么样子),但您可以通过多个步骤来完成

  • 用于沿方向将字符串拆分为数组 分号
  • 在阵列上循环
  • 用于将每个“=”替换为“=”
  • 使用字符串连接将$添加到每个字符串的前面,将“.”添加到每个字符串的末尾

  • 假设你的数据中不包含引号、等号、分号等,这应该行得通。如果包含引号、等号、分号等,你就必须找出解析规则。

    听起来你只是想将文本沿着分号分成几行,在前面加上一个美元符号,然后加上空格和引号。我不是你可以用正则表达式一步完成(或者至少我不想考虑正则表达式是什么样子),但是你可以通过多个步骤来完成

  • 用于沿方向将字符串拆分为数组 分号
  • 在阵列上循环
  • 用于将每个“=”替换为“=”
  • 使用字符串连接将$添加到每个字符串的前面,将“.”添加到每个字符串的末尾

  • 假设您的数据中不包含引号、等号、分号等,这应该是可行的。如果数据中包含引号、等号、分号等,则您必须找出解析规则。

    谢谢:)祝您愉快!!谢谢:)祝你今天愉快!!我没想到。这是另一种方法+我想不起来了。这是另一种方法+1谢谢:)祝你今天愉快!!谢谢:)祝你今天愉快!!