我是应用程序的iOS开发人员,这是一个很长的故事,但我们的自由API开发人员不可用'。所以,我是laravel / PHP的新手,并尝试修复我们的API上的错误。
基本上,当用户默认注册时,我们会将他们的Facebook个人资料图片保存在数据库中,并将其保存为应用的个人资料图片。当他们添加自定义图片时,会使用随机字母数字字符串保存进行保存,并在profile_pic
列中设置该字符串。在profile_pic
对象中返回JSON
时,我们的基本网址会附加到开头。
所以问题是这个基本URL也附加到Facebook图像URL的开头,这样看起来像https://base.url/https://facebook.url
,这意味着用户不会看到图像,只是默认的占位符灰色。我希望能够检查URL是否已经以特定值开头。
这是我到目前为止所做的:
public function getProfilePicAttribute($value){
$fbUrl = "https://scontent.xx.fbcdn.net"
$length = strlen($fbUrl);
if (substr($value, 0, $length) === $fbUrl) {
return $value
}
return 'https://' . env('VDT_DOMAIN') . '/uploads/profile_pic/' . $value;
}
这不起作用,所以我想知道是否有人可以帮助我。提前感谢任何建议!
答案 0 :(得分:6)
Laravel有很棒的starts_with()
帮手。例如,这将返回true
:
starts_with('This is my name', 'This');
答案 1 :(得分:1)
您可以使用strpos
(http://php.net/manual/en/function.strpos.php)来代替截断要比较的字符串。
if (strpos($value, $fbURL) === 0) {
return $value;
}
return 'https://' . env('VDT_DOMAIN') . '/uploads/profile_pic/' . $value;
答案 2 :(得分:0)
这是为了显示Alexey上面指出的方法的用法
public function getProfilePicAttribute($value){
$fbUrl = "https://scontent.xx.fbcdn.net";
$length = strlen($fbUrl);
if(starts_with($fbUrl, 'base.url')){
return $value;
}
return 'https://' . env('VDT_DOMAIN') . '/uploads/profile_pic/' . $value;
其中base.url是在值
之前连接的url