2011-06-02 32 views
0

如果我有一堆字符串,如XXX-WYC-5b,其中XXX是1到999之間的任何值,如何確定長度XXX?PHP:確定字符串前面的字符數

所以我可能有:
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()來做到這一點,但我似乎無法弄清楚。非常感謝您的幫助。

回答

3

使用PHP的內置字符串位置函數。因爲它從0開始計數,你甚至不用調整輸出:

$pos = strpos($string, "-"); 

對於第二部分,使用PHP的字符串函數:

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

完美的作品。很簡單。感謝您幫助我渡過死腦筋的時刻。 :) – Jon 2011-06-02 17:59:10

0

你可能需要一個不同的方法來嘗試:

<?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

哇,這很有趣。我可以派上用場。謝謝! – Jon 2011-06-02 18:00:39

+0

np,如果你想要數組的方法 – 2011-06-02 18:01:54