Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查字符串是否以字符串开头_Php_Regex_Laravel - Fatal编程技术网

Php 检查字符串是否以字符串开头

Php 检查字符串是否以字符串开头,php,regex,laravel,Php,Regex,Laravel,我是一个应用程序的iOS开发负责人,说来话长,但我们的自由职业者API开发“不可用”。所以我对laravel/PHP是一个完全的新手,并试图修复我们API上的一个bug 基本上,当用户在默认情况下注册时,我们会拍摄他们的Facebook个人资料图片,并将其URL保存在数据库中,作为应用程序的个人资料图片。当他们添加自定义图片时,它将与随机字母数字字符串保存一起保存,并且该字符串将在profile\u pic列中设置。当在JSON对象中返回profile\u pic时,我们的基本URL会附加到起始

我是一个应用程序的iOS开发负责人,说来话长,但我们的自由职业者API开发“不可用”。所以我对laravel/PHP是一个完全的新手,并试图修复我们API上的一个bug

基本上,当用户在默认情况下注册时,我们会拍摄他们的Facebook个人资料图片,并将其URL保存在数据库中,作为应用程序的个人资料图片。当他们添加自定义图片时,它将与随机字母数字字符串保存一起保存,并且该字符串将在
profile\u pic
列中设置。当在
JSON
对象中返回
profile\u pic
时,我们的基本URL会附加到起始位置

所以问题是,这个基本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;
}

这不起作用,所以我想知道是否有人能帮我解决这个问题。提前感谢您的建议

您可以使用
strpos
(),而不是截断要比较的字符串


您可以使用
strpos
(),而不是截断要比较的字符串

拉威尔有一个很好的助手。例如,这将返回
true

starts_with('This is my name', 'This');
拉威尔有一个很好的助手。例如,这将返回
true

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

这是为了说明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,这是为了显示上述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,请确保使用
=
,因为此函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。有关更多信息,请阅读布尔值部分。使用===运算符测试此函数的返回值。因此,执行
==0
就是检查它是否以字符串开头。谢谢您的回答!当我使用这个的时候,我仍然得到一个500-你知道问题可能是什么吗?对不起,如果我问的是新手问题!我刚刚注意到
strpos
中的第二个变量不正确-我将首先更改该变量,看看它是否按照文档中的说明工作,确保使用
==
,因为此函数可能返回布尔值FALSE,但也可能返回计算结果为FALSE的非布尔值。有关更多信息,请阅读布尔值部分。使用===运算符测试此函数的返回值。因此,执行
==0
就是检查它是否以字符串开头。谢谢您的回答!当我使用这个的时候,我仍然得到一个500-你知道问题可能是什么吗?对不起,如果我问的是新手问题!我刚刚注意到
strpos
中的第二个变量不正确-我将首先更改它,看看它是否有效谢谢您的回答!很抱歉,这让我很痛苦,但您能在我的代码上下文中演示一下这是如何工作的吗?在laravel 6字符串帮助程序被弃用后,此解决方案变为
Str::startsWith('this is my name','this')非常感谢您的回答!很抱歉,这让我很痛苦,但您能在我的代码上下文中演示一下这是如何工作的吗?在laravel 6字符串帮助程序被弃用后,此解决方案变为
Str::startsWith('this is my name','this')