在PHP中使用substr动态获取数据



我已经得到了这个数据:

204:7|209:8|210:10|211:11|220:1|225:6|226:5|

我想在每个较大的数字上提取冒号后的数字,我可以得到一个数字,但当得到超过双字符的数字,如11,我必须增加子字符串范围,现在如果我这样做,例如6,它将显示'6|'我如何使它,所以子字符串将得到的数字,无论什么长度的数字?

你的问题是一个很好的例子,说明为什么你不应该使用长度相关的函数与数字相关的内容。

explode将与您给定的输入完美配合:

$str = "204:7|209:8|210:10|211:11|220:1|225:6|226:5|";
$str_array = explode ('|', $str);
foreach ($str_array as $sub_str) {
   echo explode(':', $sub_str)[1]; // EDIT : Ok you wanted the part AFTER ':' I guess, so [1].
}

由@PraveenKumar和@hindmost通知,此语法自PHP 5.5起生效

在以前的版本中,您可以使用:

$str = "204:7|209:8|210:10|211:11|220:1|225:6|226:5|";
$str_array = explode ('|', $str);
foreach ($str_array as $sub_str) {
   $tmp =  explode(':', $sub_str); 
   echo $tmp[1];
}

对于substring不应该这样做。您需要使用explode():

$data = "204:7|209:8|210:10|211:11|220:1|225:6|226:5|";
$data = explode("|", $data);

上面的代码在第一级拆分,并给出一个包含条目的数组:

204:7
209:8
210:10

下一个,你需要使用:

foreach ($data as $cData)
{
    $num = explode(':', $cData);
    echo $num[1];
}

只需使用explode函数将此字符串分解为数组。你的代码应该像这样

 <?php
        $sting = "204:7|209:8|210:10|211:11|220:1|225:6|226:5|";
        $explode = explode ('|', $str);
        foreach ($explode as $test) {
          echo $test;
        }
?>

OR如果您想要:后面的数字

<?php
        $sting = "204:7|209:8|210:10|211:11|220:1|225:6|226:5|";
        $explode = explode ('|', $str);
        foreach ($explode as $test) {
          echo explode(":",$test)[1];
        }
?>

希望这对你有帮助

最新更新