使用PHP获取字符串的一部分

使用PHP获取字符串的一部分,php,string,Php,String,我有这个字符串: $tree = 'list[0001Red]=null&list[0002Blue]=null&list[0004Sky]=0002Blue&list[0003Green]=null&list[0005Grass]=0003Green'; 例如,我只需要得到开头括号前的前4个字符 $tree = '0001,0002,0004,0003,0005'; 这四个字符是随机生成的,因此它们会发生变化 谢谢你的帮助 我是用这个代码做的 $tree =

我有这个字符串:

$tree = 'list[0001Red]=null&list[0002Blue]=null&list[0004Sky]=0002Blue&list[0003Green]=null&list[0005Grass]=0003Green';
例如,我只需要得到开头括号前的前4个字符

$tree = '0001,0002,0004,0003,0005';
这四个字符是随机生成的,因此它们会发生变化

谢谢你的帮助

我是用这个代码做的

$tree = explode("list[", $tree);
$pieces = count($tree);
for($x=1; $x < $pieces; $x++){
    $temp = substr($tree[$x], 0, 4);
    if($x==1){
        $new_tree = $temp;
    }else{
        $new_tree = $new_tree . "," . $temp;
    }
}
$tree=explode(“列表[”,$tree);
$pieces=计数($tree);
对于($x=1;$x<$pieces;$x++){
$temp=substr($tree[$x],0,4);
如果($x==1){
$new_tree=$temp;
}否则{
$new_tree=$new_tree.“,”$temp;
}
}
但是Andreas的解决方案看起来更好更简单

使用regex

$arr = preg_match_all("/\[(\d{4})/", $tree);

$tree = implode(",", $arr[1]);
echo $tree; //0001,0002,0004,0003,0005

您可以分享您尝试过的内容吗?这不是一个代码编写服务。您应该尝试自己编写代码。如果您有问题,您可以发布您尝试过的内容,并明确说明哪些内容不起作用,并提供一个解决方案。我建议您阅读。
使用
[
character,然后是一点
substr()
magic应该可以做到这一点……你想分享一下这个奇怪的字符串是如何生成的吗?也许修复创建过程会更简单,而不是摆弄无用的结果。Regex是一个不错的工具。如果你是新手,你可以在这种情况下使用它。但另一方面,它会占用更多的资源o如果你真的不需要,就不要使用它。+1表示快1分钟。:)