2009-10-20 92 views
0

另一个问题0000b。PHP - 拆分字符串

$ab = "A00000001" 
echo $a; // gives result "A" 
echo $b; // gives result "1" 

$ab = "B01250" 
echo $a; // gives result "B" 
echo $b; // gives result "1250" 

上述两个示例中,将“ab”转换为“a”和“b”的easiet单向方式是什么?

谢谢!

回答

1
$ab = "A0000000001"; 
$a = substr($ab, 0, 1); 
$b = (int)substr($ab, 1); 

有关SUBSTR的更多信息可以在这里找到:http://us.php.net/substr

+0

这不适用于第二个示例 $ ab =“B01250”。 – 2009-10-20 19:59:42

+0

已更新为假定第二个“部分”始终为整数 – 2009-10-20 20:01:06

+0

我正在用正则表达式第一次玩弄,但我知道有一种更优雅的方式。谢谢!并感谢其他人。 :) – 2009-10-20 20:03:19

1

你可以做到这一点与正则表达式:

$match = preg_match('@^(\w+)(\d+)@', $input); 
    $letter = $match[1]; 
    $number = $match[2]; 
+0

为了满足您可以改变正则表达式以排除0之前的要求:“@ ^(\ w +)0 *(\ d +)@” – 2009-10-20 20:12:45

+0

好吧,但是如果他使用$数字作为int,没关系。 – eWolf 2009-10-20 23:12:12

3

这是较短的,如果这是你的意思是什么“easiet单路“:

list($a,$b) = preg_split('/0+/',$ab); 

调整你的正则表达式,如果你喜欢: http://us.php.net/manual/en/function.preg-split.php

+0

如果0不是偏移量之后的第一个数字,该怎么办? – 2009-10-20 20:11:12