2016-09-29 55 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或空短。

相关问题