Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:确定字符串中破折号前的字符数_Php - Fatal编程技术网

PHP:确定字符串中破折号前的字符数

PHP:确定字符串中破折号前的字符数,php,Php,如果我有一组字符串,如XXX-WYC-5b,其中XXX是介于1和999之间的任何值,我如何确定XXX的长度 所以我可能会: 1:6-WYC-5b 2:32-WYC-5b 3:932-W-5b 4:22-XYQ-5b 5:914-WYC-5b 我想让它告诉我XXX的长度,所以: 1:1个字符 2:2个字符 3:3个字符 4:2个字符 5:3个字符 我还想知道值本身,因此: 1:6 2:32 3:932 4:22 5:914 我一直在想,有一种方法可以使用substr_count()和explo

如果我有一组字符串,如XXX-WYC-5b,其中XXX是介于1和999之间的任何值,我如何确定XXX的长度

所以我可能会:
1:6-WYC-5b
2:32-WYC-5b
3:932-W-5b
4:22-XYQ-5b
5:914-WYC-5b

我想让它告诉我XXX的长度,所以:
1:1个字符
2:2个字符
3:3个字符
4:2个字符
5:3个字符

我还想知道值本身,因此:
1:6
2:32
3:932
4:22
5:914


我一直在想,有一种方法可以使用substr_count()和explode()来实现这一点,但我似乎无法理解。非常感谢您的帮助。

使用PHP内置的字符串位置函数。因为它从0开始计数,所以您甚至不必调整输出:

$pos = strpos($string, "-");
对于第二部分,请使用PHP的substring函数:

return substr($string, 0, $pos);

使用PHP的内置字符串位置函数。因为它从0开始计数,所以您甚至不必调整输出:

$pos = strpos($string, "-");
对于第二部分,请使用PHP的substring函数:

return substr($string, 0, $pos);

您可能希望尝试一种不同的方法:

    <?php 

    $str[] = '6-WYC-5b';
    $str[] = '32-WYC-5b';
    $str[] = '932-W-5b';
    $str[] = '22-XYQ-5b';
    $str[] = '914-WYC-5b';

    foreach($str as $v){
        $result[] = getval($v);
    }

    function getval($value){
        $seg = explode('-',$value);
        return array('int'=>$seg[0],'intlen'=>strlen($seg[0]),'char'=>$seg[1],'charlen'=>strlen($seg[1]),'last'=>$seg[2],'lastlen'=>strlen($seg[2]));
    }
print_r($result);
    ?>

outputs:
    Array
    (
        [0] => Array
            (
                [int] => 6
                [intlen] => 1
                [char] => WYC
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

        [1] => Array
            (
                [int] => 32
                [intlen] => 2
                [char] => WYC
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

        [2] => Array
            (
                [int] => 932
                [intlen] => 3
                [char] => W
                [charlen] => 1
                [last] => 5b
                [lastlen] => 2
            )

        [3] => Array
            (
                [int] => 22
                [intlen] => 2
                [char] => XYQ
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

        [4] => Array
            (
                [int] => 914
                [intlen] => 3
                [char] => WYC
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

    )

产出:
排列
(
[0]=>阵列
(
[int]=>6
[intlen]=>1
[char]=>WYC
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
[1] =>阵列
(
[int]=>32
[intlen]=>2
[char]=>WYC
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
[2] =>阵列
(
[int]=>932
[intlen]=>3
[char]=>W
[charlen]=>1
[最后]=>5b
[lastlen]=>2
)
[3] =>阵列
(
[int]=>22
[intlen]=>2
[char]=>XYQ
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
[4] =>阵列
(
[int]=>914
[intlen]=>3
[char]=>WYC
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
)

您可能想要尝试的另一种方法:

    <?php 

    $str[] = '6-WYC-5b';
    $str[] = '32-WYC-5b';
    $str[] = '932-W-5b';
    $str[] = '22-XYQ-5b';
    $str[] = '914-WYC-5b';

    foreach($str as $v){
        $result[] = getval($v);
    }

    function getval($value){
        $seg = explode('-',$value);
        return array('int'=>$seg[0],'intlen'=>strlen($seg[0]),'char'=>$seg[1],'charlen'=>strlen($seg[1]),'last'=>$seg[2],'lastlen'=>strlen($seg[2]));
    }
print_r($result);
    ?>

outputs:
    Array
    (
        [0] => Array
            (
                [int] => 6
                [intlen] => 1
                [char] => WYC
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

        [1] => Array
            (
                [int] => 32
                [intlen] => 2
                [char] => WYC
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

        [2] => Array
            (
                [int] => 932
                [intlen] => 3
                [char] => W
                [charlen] => 1
                [last] => 5b
                [lastlen] => 2
            )

        [3] => Array
            (
                [int] => 22
                [intlen] => 2
                [char] => XYQ
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

        [4] => Array
            (
                [int] => 914
                [intlen] => 3
                [char] => WYC
                [charlen] => 3
                [last] => 5b
                [lastlen] => 2
            )

    )

产出:
排列
(
[0]=>阵列
(
[int]=>6
[intlen]=>1
[char]=>WYC
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
[1] =>阵列
(
[int]=>32
[intlen]=>2
[char]=>WYC
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
[2] =>阵列
(
[int]=>932
[intlen]=>3
[char]=>W
[charlen]=>1
[最后]=>5b
[lastlen]=>2
)
[3] =>阵列
(
[int]=>22
[intlen]=>2
[char]=>XYQ
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
[4] =>阵列
(
[int]=>914
[intlen]=>3
[char]=>WYC
[charlen]=>3
[最后]=>5b
[lastlen]=>2
)
)

工作正常。这么简单。谢谢你帮助我度过了脑死亡的时刻。:)工作完美。这么简单。谢谢你帮助我度过了脑死亡的时刻。:)哇,真有趣。也许对我有用。非常感谢。np,如果你想用数组逼近哇,那很有趣。也许对我有用。非常感谢。np,如果你想使用数组方法