PHP:sscanf从双引号内的字符串中提取值

发布于 2024-11-06 05:35:55 字数 273 浏览 0 评论 0原文

我正在尝试解析会话字符串中双引号内包含的 2 个值。其他字符串变量不是常量,因此不能使用任何附加字符作为标记。我只需要引用的值。我的以下 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;

感谢您的帮助。

I'm trying to parse the 2 values contained within double quotes from a session string. The other string variables are not constant and therefore can not use any additional characters as markers. I only need the quoted values. My following sscanf function is incomplete.

$string = 'a:1:{s:14:"174.29.144.241";s:8:"20110508";}';

sscanf($string,'%[^"]', $login_ip, $login_date);

echo $login_ip;
echo $login_date;

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

羁拥 2024-11-13 05:35:55

该数据只是来自 serialize() 的 PHP 序列化文本,

在这种情况下,您可以通过以下方式获取所需的数据:

$sessionData = unserialize('a:1:{s:14:"174.29.144.241";s:8:"20110508";}');
list($ip, $date) = each($sessionData);

That data is just PHP serialized text from serialize()

In which case you can get at the data you need with:

$sessionData = unserialize('a:1:{s:14:"174.29.144.241";s:8:"20110508";}');
list($ip, $date) = each($sessionData);
预谋 2024-11-13 05:35:55
$string = 'a:1:{s:14:"174.29.144.241";s:8:"20110508";}';

preg_matches("/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)/",$string,$matches);

echo $matches[1];

这应该返回您的 IP 地址。查阅 php.net

$string = 'a:1:{s:14:"174.29.144.241";s:8:"20110508";}';

preg_matches("/(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)/",$string,$matches);

echo $matches[1];

This should return your ip address. consult php.net

梦里南柯 2024-11-13 05:35:55

您可以使用正则表达式来做到这一点。

$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,第二个引用的值将转到 ip。

You can use regex to do that.

$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'];

First quoted value will go to ip, second to date.

最舍不得你 2024-11-13 05:35:55

一个有趣的技巧是使用“作为分隔符来使用爆炸,如下所示:

<?php
$res = explode('"','a:1:{s:14:"174.29.144.241";s:8:"20110508";}');
print_r($res);
?>

双引号中的任何值都将在奇数索引中返回,即 $res[1], $res[3]

An interesting hack would be to use explode using " as the separator like this:

<?php
$res = explode('"','a:1:{s:14:"174.29.144.241";s:8:"20110508";}');
print_r($res);
?>

Any value in double quotes would be returned in an odd index i.e $res[1], $res[3]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文