php从字符串中提取值
我有一个会话变量,它包含以下字符串php从字符串中提取值,php,explode,Php,Explode,我有一个会话变量,它包含以下字符串 a:2:{s:7:"LoginId";s:32:"361aaeebef992bd8b57cbf390dcb3e8d";s:8:"Username";s:6:"aaaaaa";} 我想提取用户名“aaaaa”的值。有人能建议更简单/更有效的方式吗 $session_data = unserialize($_SESSION["SecurityAccess_CustomerAccess"]); $session_user_array = explode(';',
a:2:{s:7:"LoginId";s:32:"361aaeebef992bd8b57cbf390dcb3e8d";s:8:"Username";s:6:"aaaaaa";}
我想提取用户名“aaaaa”的值。有人能建议更简单/更有效的方式吗
$session_data = unserialize($_SESSION["SecurityAccess_CustomerAccess"]);
$session_user_array = explode(';', $_SESSION["SecurityAccess_CustomerAccess"]);
$temp = $session_user_array[3];
$temp = explode(':', $temp);
$username = $temp[2];
echo $username;
它只是变得更加丑陋。。。必须删除引号
if ($_SESSION["SecurityAccess_CustomerAccess"]){
$session_data = unserialize($_SESSION["SecurityAccess_CustomerAccess"]);
$session_user_array = explode(';', $_SESSION["SecurityAccess_CustomerAccess"]);
$temp = $session_user_array[3];
$temp = explode(':', $temp);
$temp = str_replace("\"", "", $temp[2]);
$username = $temp;
echo $username ;
}
这就是您所需要的:
$session_data = unserialize($_SESSION["SecurityAccess_CustomerAccess"]);
echo $session_data['Username'];
您的会话数据是一个以表单形式存储的数组,因此取消序列化会将其转换回常规PHP数组。这就是您所需要的:
$session_data = unserialize($_SESSION["SecurityAccess_CustomerAccess"]);
echo $session_data['Username'];
您的会话数据是一个以表单形式存储的数组,因此取消序列化会将其转换回常规PHP数组。如果数据总是以类似的方式形成,我建议使用正则表达式
preg_match('/"Username";s:\d+:"(\w*)"/',$session_data,$matches);
echo $matches[1];
如果数据总是以类似的方式形成,我建议使用正则表达式
preg_match('/"Username";s:\d+:"(\w*)"/',$session_data,$matches);
echo $matches[1];
如果这些值的位置总是相同的,您可能会编写某种类型的正则表达式来帮助实现这些功能。但我认为你们这里的内容对可读性很好。如果有人来找你,他们会很清楚你想要实现什么。类似这样的字符串的正则表达式可能不会有相同的效果。如果这些值的位置始终相同,您可能可以编写某种类型的正则表达式来帮助实现这些效果。但我认为你们这里的内容对可读性很好。如果有人来找你,他们会很清楚你想要实现什么。类似这样的字符串的正则表达式可能不会有相同的效果。但是,如果参数不总是按此顺序排列,则需要/“Username”;s:\d+:“(.*)”/是一个有效但错误的解决方案。非序列化是正确的方法。但是,如果参数不总是按顺序排列,则需要/“Username”;s:\d+:“(.*)”/是一个有效但错误的解决方案。非工业化是正确的道路。富于智慧!必须阅读字符串和数组上的800页!他妈的太棒了!必须阅读字符串和数组上的800页!