我尝试在模型中创建一个返回字符串结果的属性函数,但我想更改字符串的格式。
实际上我有一个号码许可证(varchar
列),显示为17923457
,我想将格式更改为17-92-3457
。
我的函数属性实际上就像:
public function getNumberAttribute() {
return $this->num_licence ;
}
有人知道如何显示特定格式吗?非常感谢提前
答案 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