PHP - 分割字符串

问题描述 投票:0回答:4

另一个n00b问题。

$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”的简单方法是什么?

谢谢!

php string split
4个回答
3
投票

这更短,如果这就是您所说的“简单的单一方式”的意思:

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

如果您愿意,请调整您的正则表达式: http://us.php.net/manual/en/function.preg-split.php


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

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


1
投票

您可以使用正则表达式来做到这一点:

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

0
投票

最灵活、直接且考虑类型的方法是使用

sscanf()
。该函数(及其“格式”表达式)将允许匹配 1 个或多个大写字母,后跟一个可能用零填充的整数。

输出将是一个 2 元素数组,其中包含前导字母字符串,然后是一个 int 类型数字。这对于喜欢在应用程序中维护干净、严格的数据类型的专业开发人员来说非常有用。

代码:(演示

$tests = ['A00000001', 'B01250'];

foreach ($tests as $test) {
    var_export(sscanf($test, '%[A-Z]%d'));
    echo "\n";
}

输出:

array (
  0 => 'A',
  1 => 1,
)
array (
  0 => 'B',
  1 => 1250,
)
© www.soinside.com 2019 - 2024. All rights reserved.