Получить часть URL в PHP не полностью работает - PullRequest
1 голос
/ 23 мая 2019

У меня есть этот код здесь:

$url = 'https://www.my-page.de/account/show/4913';

echo substr( $url, strrpos( $url, '/' ) + 1 );

Это возвращает мне нужный идентификатор:

4913

Теперь проблема начинается. В некоторых случаях URL выглядит так:

$url = 'https://www.my-page.de/account/show/4913/';

$url = 'https://www.my-page.de/account/show/4913/?conversationId=xxx';

Это означает, что мой код больше не работает. Так можно ли быть на 100% уверенным, что я всегда получаю свой идентификатор из URL? Идентификатор всегда находится в одной и той же позиции с начала, но конец может быть другим.

Обновление

Когда у меня есть этот код, я больше не получаю последнюю часть. Любая идея, почему и как это исправить?:

$url = 'https://my-page.de/account/show/4913/';
$id = basename( dirname( $url ) );

Я просто хочу быть уверен, что это работает в любой ситуации. В этом случае выбранная часть:

show

Ответы [ 2 ]

5 голосов
/ 23 мая 2019

Вы можете использовать функции, предназначенные для каталогов и / или URL:

echo basename(dirname($url));
//or 
echo basename(pathinfo($url, PATHINFO_DIRNAME));
//or
echo basename(parse_url($url, PHP_URL_PATH));

Последний может вернуть имя файла, если у вас было https://www.my-page.de/account/show/4913/index.php, поэтому вы хотели бы использовать:

echo basename(dirname(parse_url($url, PHP_URL_PATH)));

Много возможностей в зависимости от того, что вам нужно. Дело в том, что существуют специальные функции для работы с каталогами, именами файлов и URL-адресами, так что вам не нужно рассматривать их как просто строки, которые не имеют значения, но имеют неограниченные возможности.

2 голосов
/ 23 мая 2019

Просто используйте explode(), чтобы превратить его в массив, затем получите 5-й элемент, чтобы получить идентификатор:

<code><?php
    $url = 'https://www.my-page.de/account/show/4913/?conversationId=xxx&trey=trey';
    $arr = explode('/', $url);

    $id = $arr[5];

    echo '<pre>'. print_r($id, 1) .'
';

тогда не имеет значения, сколько есть параметров запроса, они всегда будут последними

refs:

https://www.php.net/manual/en/function.explode.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...