2016-12-18 3 views
0

Я получаю эту ошибку в строке 14, этот код я использую, чтобы получить часть URL-адреса (пример: enterforce.nnnet/server2/server3/для примера server2). Это работает, но я получил эту ошибку:PHP Примечание: Неинициализированное смещение строки: -1

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] == '/') 
+0

Это потому, что вы передаете пустую строку методу 'removeSlash()'. Поскольку 'strlen ($ string)' равно '0', вы получите' if ($ string [- 1] == '/') ', и именно поэтому вы получаете эту ошибку. Сначала проверьте длину строки, а затем выполните операцию. –

ответ

0

Причиной проблемы является то, что переменная $string пуста , Похоже, вам просто нужно снять конечную косую черту. Попробуйте это:

private function removeSlash($string){ 
    return rtrim($string, '/'); 
} 

См http://php.net/manual/en/function.rtrim.php

0

Вы получаете эту ошибку, когда ваша длина строки 0, потому что нет символа в строке с номером «-1». Попробуйте добавить некоторую строковую проверку до этой функции

Смежные вопросы