2016-09-29 19 views
1

内の文字列に含まれていないオフセット私は、PHPアプリケーションでこの行を持っている:警告:strpos():

$url = $_SERVER['REQUEST_URI']; 
 
$baseHref = $_SERVER['SERVER_NAME']=='localhost' ? '/byetask/' : '/'; 
 
$hasMultipleUrlParts = strpos($url, '/', strlen($baseHref)) !== false;

それはエラーをスローし、私は理由を理解しない:

警告:strpos():C:\ bitnami \ wampstack-5.6.24-0 \ apache2 \ htdocs ..... \ ng-src \ index.phpの行6の文字列にオフセットが含まれていません。

私は間違ったことをしましたか?誰かが私にこれを説明できますか?ありがとう!

+1

入力が正確に何か、出力が何を期待しているのかなどの詳細を入力してください。 –

+1

$ urlと$ baseHrefの内容を投稿できますか?私はstrlen($ baseHref)が$ urlの長さより大きい値を返すと推測する危険があります。 – vincenth

+0

@vhoen質問 – Daniel

答えて

6

文字列$url$baseHrefより短いため、文字列の最後を超えて検索を開始しようとしています。

+0

このことはコメントではできませんか? –

+1

コメントは、答えにつながるより多くの情報を促す(または与える)必要があります。コメントが答えであれば、回答は –

+0

として投稿する必要があります。それは正しいですし、OPも説明を求めます。ありがとう... –

1

オフセットの長さに問題があり、オフセットの長さが実際の文字列よりも大きいため、このエラーが発生します。

$baseHref = "http://stackoverflow.com"; 
 
//$url = "http://stackoverflow.com/questions/"; // URL length is greater than base URL 
 

 
$url = ""; // URL is empty or shorter than base url 
 
if(strlen($baseHref) < strlen($url)) 
 
$hasMultipleUrlParts = strpos($url, '/', strlen($baseHref)) !== false; 
 
else 
 
$hasMultipleUrlParts = false; 
 

 
var_dump($hasMultipleUrlParts);

このコードを試してみてください$ URLが$ baseHrefより短いか、空であるときはいつでも、それはfalseに$ hasMultipleUrlPartsを設定します。