0

我想在显示时像下面这样格式化信用卡,

例如:

1234 4567 9874 1222

作为

1xxx xxxx xxx 1222

Yii 中有这样的格式化功能吗?

4

3 回答 3

2

不——但使用直接 PHP 并没有错。

如果你总是想要第一个和最后 4 个字符,你可以这样做:

$last4 = substr($cardNum, -4);
$first = substr($cardNum, 0, 1);

$output = $first.'xxx xxxx xxxx '.$last4;
于 2012-10-15T13:27:10.093 回答
1

有很多方法可以做到这一点,没有 Yii 特定的你可以使用 str_split(未经测试)来做到这一点:

$string = "1234 4567 1234 456";
$character_array = str_split($string);
for ($i = 1; $i < count($character_array) - 4; $i++) {
    if ($character_array[$i] != " "){
        $character_array[$i] = "x";
    }
}
echo implode($character_array);
  • 因此,我们从名为 $character_array 的字符串中创建了一个字符数组。
  • 然后我们循环遍历字符(从位置 1 开始,而不是 0,所以第一个字符是可见的)。
  • 我们循环直到数组中的条目数减去 4(所以最后 4 个字符不会被替换)我们用“x”替换循环中的每个字符(如果它不等于空格)
  • 我们将数组内爆回字符串
于 2012-10-15T13:26:29.780 回答
0

你也可以使用preg_replace

$card='1234 4567 9874 1222';
$xcard = preg_replace('/^([0-9])([- 0-9]+)([0-9]{4})$/', '${1}xxx xxxx xxxx ${3}', $card);

此正则表达式还将处理连字符。

Yii 没有内置函数。

于 2012-10-15T13:48:00.327 回答