我想从字符串中获取特定数据

时间:2018-01-27 07:52:55

标签: php mysql database

我想拆分字符串并从此字符串中获取特定数据。我正在使用MySQL和PHP。
我在从数据库中检索数据时遇到问题。 这是字符串:

a:6:{s:12:"cfdb7_status";s:6:"unread";s:9:"your-name";s:12:"Talha Far";s:10:"your-email";s:19:"talha4@gmail.com";s:6:"number";s:11:"03379228";s:9:"your-city";s:9:"Islamabad";s:10:"Studylevel";s:8:"Graduate";}

我想从字符串中获取这些值:

Talha Far , talha4@gmail.com , 03379228, Islamabad , Graduate

2 个答案:

答案 0 :(得分:0)

您可以使用unserialize()将字符串转换为对象:

$str = 'a:6:{s:12:"cfdb7_status";s:6:"unread";s:9:"your-name";s:9:"Talha Far";s:10:"your-email";s:16:"talha4@gmail.com";s:6:"number";s:8:"03379228";s:9:"your-city";s:9:"Islamabad";s:10:"Studylevel";s:8:"Graduate";}';
$obj = unserialize($str) ;
var_dump($obj);

你想要的价值观:

echo $obj['your-name'];
echo $obj['your-email'];
echo $obj['number'];
// ...

但是,要小心,一些指数是错误的。请注意您的给定字符串与此anwser中的字符串之间的差异(例如:s:9:"Talha Far"而不是s:12:"Talha Far")。

答案 1 :(得分:0)

$str = 'a:6:{s:12:"cfdb7_status";s:6:"unread";s:9:"your-name";s:12:"Talha Far";s:10:"your-email";s:19:"talha4@gmail.com";s:6:"number";s:11:"03379228";s:9:"your-city";s:9:"Islamabad";s:10:"Studylevel";s:8:"Graduate";}';

$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $str);

print_r(unserialize($data));

您将从中获取数据数组,并且可以提取您的值。