PHP:确定字符串中破折号前的字符数
如果我有一组字符串,如XXX-WYC-5b,其中XXX是介于1和999之间的任何值,我如何确定XXX的长度 所以我可能会: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
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,如果你想使用数组方法