PHP 注意:未初始化的字符串偏移量:-1
PHP Notice: Uninitialized string offset: -1
我在第 14 行收到此错误,此代码用于获取 url 的一部分(例如:enterforce。nnnet/server2/server3/ 对于 server2 示例)。
它工作正常,但我收到此错误:
PHP Notice: Uninitialized string offset: -1
完整代码:
<?php
class simpleUrl{
var $site_path;
function __construct($site_path){
$this->site_path = $this->removeSlash($site_path);
}
function __toString(){
return $this->site_path;
}
private function removeSlash($string){
if($string[strlen($string) - 1] == '/')
$string = '/';
return $string;
}
function segment($segment){
$url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
$url = explode('/', $url);
if( isset($url[$segment]) )
return $url[$segment];
else
return false;
}
}
?>
第 14 行:
if($string[strlen($string) - 1] == '/')
问题的原因是$string
变量为空。看来,您只需要去掉尾部的斜线即可。试试这个:
private function removeSlash($string){
return rtrim($string, '/');
}
当字符串长度为 0 时会出现此错误,因为字符串中没有数字“-1”的字符。尝试在该函数之前添加一些字符串验证
我在第 14 行收到此错误,此代码用于获取 url 的一部分(例如:enterforce。nnnet/server2/server3/ 对于 server2 示例)。 它工作正常,但我收到此错误:
PHP Notice: Uninitialized string offset: -1
完整代码:
<?php
class simpleUrl{
var $site_path;
function __construct($site_path){
$this->site_path = $this->removeSlash($site_path);
}
function __toString(){
return $this->site_path;
}
private function removeSlash($string){
if($string[strlen($string) - 1] == '/')
$string = '/';
return $string;
}
function segment($segment){
$url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
$url = explode('/', $url);
if( isset($url[$segment]) )
return $url[$segment];
else
return false;
}
}
?>
第 14 行:
if($string[strlen($string) - 1] == '/')
问题的原因是$string
变量为空。看来,您只需要去掉尾部的斜线即可。试试这个:
private function removeSlash($string){
return rtrim($string, '/');
}
当字符串长度为 0 时会出现此错误,因为字符串中没有数字“-1”的字符。尝试在该函数之前添加一些字符串验证