字符串格式获取属性函数

时间:2017-04-02 08:04:12

标签: laravel

我尝试在模型中创建一个返回字符串结果的属性函数,但我想更改字符串的格式。

实际上我有一个号码许可证(varchar列),显示为17923457,我想将格式更改为17-92-3457

我的函数属性实际上就像:

public function getNumberAttribute() {

return $this->num_licence ; 

}

有人知道如何显示特定格式吗?非常感谢提前

2 个答案:

答案 0 :(得分:3)

使用vpsprintf

的另一种线性方法
public function getNumberAttribute() {

    return vsprintf('%d%d-%d%d-%d%d%d%d', str_split($this->num_licence));

}

例如:

$s = vsprintf('%d%d-%d%d-%d%d%d%d', str_split('17923457'));

print_r($s); // Outputs 17-92-3457

答案 1 :(得分:1)

如果你确定你总是有8位数,你可以

public function getNumberAttribute() {
    $first = substr($this->num_licence, 0, 2); //from position 0, take 2 digits
    $second = substr($this->num_licence, 2, 2); //from position 2, take 2
    $third = substr($this->num_licence, 4); //from 4 take the rest. 
    return $first . '-' . $second . '-' . $third; 
}

你明白了。使用substring来拆分varchar / string。 https://www.w3schools.com/php/func_string_substr.asp