检查String是否以字符串

时间:2017-04-20 17:03:10

标签: php regex laravel

我是应用程序的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;
}

这不起作用,所以我想知道是否有人可以帮助我。提前感谢任何建议!

3 个答案:

答案 0 :(得分:6)

Laravel有很棒的starts_with()帮手。例如,这将返回true

starts_with('This is my name', 'This');

答案 1 :(得分:1)

您可以使用strposhttp://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