Найти индекс последней косой черты (/) в строке в PHP - PullRequest
0 голосов
/ 01 сентября 2018

Я использую Laravel, и я использовал getModel() метод для ModelNotFoundException объекта:

$modelName = $exception->getModel();

Хочу: Чтобы извлечь «Пользователь» из $ modelName.

Мой код:

$modelName = $exception->getModel();
$pos =strrpos($modelName,'/');
$modelName = substr($modelName, $pos);

Выход: App\\User.

Как получить только User часть $modelName?

Ограничение : можно использовать strrpos() Функция PHP * только 1029 *.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Вы хотите найти последний символ "\" на входе, поэтому вы ищете "/"?

Там ваша первая ошибка.

Следующая проблема заключается в том, что символ "\" является escape-символом, поэтому будьте осторожны с цитатами.

Но вам нужно все после символа - поэтому ваша подстрока должна начинаться на один символ справа.

$pos =strrpos($modelName,'\\');
$modelName = substr($modelName, $pos+1);
0 голосов
/ 01 сентября 2018

Ваш текущий strrpos возвращает false, и поэтому substr начинается с самого начала.

Пространства имен моделей используют \, а не /. Вы должны использовать strrpos($modelName,'\\');. Двойной \ есть, иначе ' будет отключен. Следовательно, вам нужно экранировать саму обратную косую черту.

$pos =strrpos($modelName,'\\');
$modelName = substr($modelName, $pos);

Теперь это вернет \User. Если вам не нужна первая косая черта, вы можете перейти с

$modelName = substr($modelName, ++$pos);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...