2013-10-09 2 views
0

Я бы хотел спросить у вас сегодня, если вы поможете мне улучшить свой код. Я пытаюсь получить идентификатор URL-адреса, это всегда в конце после/id/для этого примера. Мне нужно «9050102» без кавычек.Получить часть URL-адреса в разных случаях

URL-адрес может прийти разными путями:

.site.com/Descreption-Text-Etc/id/9050102 
site.com/Descreption-Text-Etc/id/9050102 
site.com/bi/product/9050102 
.site.com/bi/product/9050102 

Мой код:

$foo = explode('/', $url); //Extracing ID 
$id = strtoupper($foo[3]); //ID 

Я заметил, в некоторых случаях он не работает, не знаю, почему так что после этого я добавил :

if (!$id) { 

$id = strtoupper($foo[2]); //Making Sure ID Found 

} 

Помогите мне улучшить это, чтобы найти его на 100% точно и всегда?

ответ

0

Вы можете использовать end функцию, чтобы получить последний элемент в массиве. Он устанавливает указатель массива на последний элемент и возвращает его значение.

$foo = explode('/', $url); //Extracing ID 
$id = strtoupper(end($foo)); //ID 
if(isset($id) && strlen($id)==10) { 
//code 
} 
+0

Интересно, что я не знал конца в php. Я также хочу добавить отказоустойчивость, если идентификатор не был настроен на случайный случай, если знать, является ли $ id emtpy? – Jacknson

+0

это будет работать, если оно пустое? Могу ли я попросить об одном небольшом улучшении? Что делать, если $ id установлен, но не то, что мне нужно. Позволяет проверить, является ли $ id десятизначным буквенно-цифровым длинным? если нет, я установил его вручную – Jacknson

+0

'if (isset ($ id) && $ id && (strlen ($ id) === 10) { // код }' это правильно? – Jacknson

0

Если вы уверены, что идентификатор всегда будет на последнем месте, вы можете использовать функцию end, чтобы получить последний элемент массива:

$id = end($foo); 

if ($id && isset($id[9])) { 
    // this means that the ID exists and has at least 10 characters 
} 
+0

интересно, я не знал 'end' в PHP. Я также хочу добавить отказоустойчивость, если идентификатор не был настроен на случайный случай, если знать, является ли $ id emtpy? – Jacknson

+0

Я просто обновил ответ, чтобы добавить проверку существования и даже больше, если присутствует 10-й символ или нет. – misterjinx

+0

Благодарим вас за добавление 10 символов. это будет означать, если он имеет не менее 10 символов? Как я могу изменить это на 10 символов, только если меньше или больше, это не хорошо;)? – Jacknson

0
$foo = explode('/', $url); 
//count the $foo array 
$count = count($foo); 
//the last index will be minus 1 
$id = $foo[$count-1]; 
+0

, как узнать, является ли $ id пустым? Я укажу его вручную, если необходимо – Jacknson

0

Попробуйте

<?php 
$url = "site.com/Descreption-Text-Etc/id/9050102"; 
echo substr($url, strrpos($url, "/") + 1); 
Смежные вопросы