我正在尝试使用许可证 PHP 系统……我想向用户显示他们的许可证状态。许可证服务器给了我这个:
name=Service_Name;nextduedate=2013-02-25;status=Active
我需要像这样分离数据:
$name = “Service_Name”;
$nextduedate = “2013-02-25”;
$status = “Active”;
我有 2 天的时间想用 preg_match_all 解决这个问题,但我不能:(
我正在尝试使用许可证 PHP 系统……我想向用户显示他们的许可证状态。许可证服务器给了我这个:
name=Service_Name;nextduedate=2013-02-25;status=Active
我需要像这样分离数据:
$name = “Service_Name”;
$nextduedate = “2013-02-25”;
$status = “Active”;
我有 2 天的时间想用 preg_match_all 解决这个问题,但我不能:(
这可以很简单地在没有正则表达式的情况下解决。的使用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);
尽管我敦促您改用数组。比发明不存在且未明确声明的变量更具可读性。
;
如果您替换为 ,这基本上是一个查询字符串&
。你可以parse_str()
这样尝试:
$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
听起来您只想将文本沿分号分成不同的行,在前面添加一个美元符号,然后添加空格和引号。我不确定您是否可以使用正则表达式一步完成(或者至少我不想考虑该正则表达式会是什么样子),但您可以通过多个步骤来完成。
假设您的数据在数据中不包含引号、等号、分号等,这应该可行。如果是这样,您将不得不为此弄清楚解析规则。