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という文字列から文字の配列を作成しています。
  • 次に、文字をループします(0ではなく位置1から開始するため、最初の文字が表示されます)。
  • 配列内のエントリ数から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 に答える