PHP:sscanf从双引号内的字符串中提取值
问题描述:
我试图从会话字符串中解析双引号内包含的2个值。其他字符串变量不是常量,因此不能将任何其他字符用作标记。我只需要引用的值。我的下一个sscanf函数不完整。PHP:sscanf从双引号内的字符串中提取值
$string = 'a:1:{s:14:"174.29.144.241";s:8:"20110508";}';
sscanf($string,'%[^"]', $login_ip, $login_date);
echo $login_ip;
echo $login_date;
感谢您的帮助。
答
你可以使用正则表达式来做到这一点。
$string = 'a:1:{s:14:"174.29.144.241";s:8:"20110508";}';
$pattern = '/"(?P<ip>[^"]*)"[^"]*"(?P<date>[^"]*)"/';
preg_match($pattern, $string, $matches);
echo $matches['ip'].' '.$matches['date'];
第一次报价的价格将转到ip,是第二次到日期。
答
一个有趣的黑客将是使用爆炸使用“作为分隔符是这样的:
<?php
$res = explode('"','a:1:{s:14:"174.29.144.241";s:8:"20110508";}');
print_r($res);
?>
在双引号的任何值将在奇数索引返回即$ RES [1],$ RES [3 ]
答
数据从serialize()
只是PHP序列化的文本在这种情况下,你可以在你需要的数据得到:
$sessionData = unserialize('a:1:{s:14:"174.29.144.241";s:8:"20110508";}');
list($ip, $date) = each($sessionData);
为什么不使用regx它更灵活 – Ibu 2011-05-08 06:35:11