繁体   English   中英

Preg_Match_All和RegEx获取值

[英]Preg_Match_All and RegEx Getting Values

我正在尝试使用正则表达式获取此字符串中的2个值:

a:2:{i:45;s:29:"Program Name 1";i:590;s:19:"Program Name 2";}

我尝试从该字符串(以及类似的字符串)中获取两个以“ s:”开头并以“:”结尾的变量。

$string = 'a:2:{i:45;s:29:"Program Name 1";i:590;s:19:"Program Name 2";}';
preg_match_all("/s:(\d+):/si", $page['perfarray'], $match);
print_r($match);

我已经尝试了很多事情,但这是我第一次尝试使用正则表达式从字符串中获取多个值。

这是当前结果:Array([0] => Array()[1] => Array())

非常感谢任何建设性的帮助。 我已经阅读了php.net上的函数,但在堆栈溢出中找不到与我的需求非常接近的类似问题。 提前致谢。

那应该工作:

preg_match_all("/s:([0-9]+):/si", $page['perfarray'], $match);

看起来像一个序列化的字符串。 代替使用正则表达式,使用unserialize()检索所需的值。

更新:看来您的字符串不是有效的序列化字符串。 在这种情况下,您可以使用正则表达式来完成工作:

$string = 'a:2:{i:45;s:29:"Program Name 1";i:590;s:19:"Program Name 2";}';
if(preg_match_all("/s:(\d+):/si", $string, $matches)) {
    print_r($matches[1]);
}

输出:

Array
(
    [0] => 29
    [1] => 19
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM