2017-04-20 17 views
0

私はアプリケーションのiOS devの鉛です。それは長い話ですが、フリーランスのAPI開発者は「利用できません」です。ですから、私はlaravel/PHPの完全な初心者であり、私たちのAPIのバグを修正しようとしています。文字列で始まる文字列を確認する

基本的に、ユーザーがデフォルトでサインアップすると、Facebookのプロフィール写真を撮って、そのURLをアプリのプロフィール写真としてデータベースに保存します。彼らはカスタム画像を追加すると、ランダムな英数字の文字列の保存で保存され、その文字列はprofile_picの列に設定されます。 profile_picJSONオブジェクト内に返されると、私たちのベースURLが先頭に追加されます。

このベースURLは、https://base.url/https://facebook.urlのように表示されるように、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; 
} 

これは誰もがそれで私を助けることができるだろう場合ので、私は思っていた動作しません。アドバイスを事前にありがとう!

答えて

5

ララベルは素晴らしいstarts_with()ヘルパーです。たとえば、これはtrueを返します。

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

お返事ありがとうございます!申し訳ありませんが痛みはありますが、私のコードの文脈でこの仕組みがどのように機能するかを示すことができますか? –

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; 
+0

ドキュメントに記載されているように、必ず「===」を使用してください。「この関数はBoolean FALSEを返すかもしれませんが、FALSEと評価されるブール値でない値も返す可能性があります。この楽しい値の戻り値をテストするために===演算子を使用してください」と述べた。したがって、 '=== 0'を実行すると、文字列で始まるかどうかがチェックされます。 – WOUNDEDStevenJones

+0

あなたの答えをありがとう!私はまだこれを使用するときに返される500を得ています - あなたは問題が何であるか知っていますか?私が本当に初心者の質問をしている場合は申し訳ありません! –

+0

'strpos'の2番目の変数が間違っていることに気付きました - まずそれを変更して動作するかどうか確認してください –

0

を、これはbase.urlはどんなURL値

前連結なっているであるアレクセイ

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; 

で上記に示した方法の使用方法を示すことです

関連する問題