2016-09-29 57 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 on line 6

難道我做錯了什麼?有人能解釋我嗎?謝謝!

+1

請提供更多的細節,如究竟是輸入,和你有什麼期望的輸出是什麼? –

+1

你可以發佈$ url和$ baseHref的內容嗎?我會冒險猜測strlen($ baseHref)返回一個大於$ url長度的值。 – vincenth

+0

@vhoen餘米編輯問題 – Daniel

回答

6

字符串$url$baseHref更短,因此它試圖在字符串末尾開始搜索。

+0

這個東西是不是可以通過評論來完成的? –

+1

評論應該提示(或給出)更多的信息,導致答案。如果評論_is_答案,那麼它應該被張貼爲答案 –

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

試試這個代碼,它設置$ hasMultipleUrlParts爲false,每當$網址超過$ baseHref或空短。

相關問題