Использование PHP для получения строки URL
Вот мой URL:
http://www.mywebsite.com/local/cityname-free-services
я использую
$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper($check);
echo $check;
чтобы получить название города и использовать его для своей выгоды. Однако, когда это повторяется, я получаю это:
CITYNAME-FREE-SERVICES
когда все, что я хочу повторить это:
CITYNAME
Что мне нужно изменить в коде, чтобы просто получить название города?
Кроме того, у некоторых названий городов есть тире, и мне нужно заменить их пустым пространством при отражении. Что нужно добавить для этого? Спасибо!
4 ответа
Вы хотите снова взорвать полученную строку с -
и сохранить первый элемент, что-то вроде
$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = current(explode('-', strtoupper($check)));
echo $check;
Таким образом, если последняя часть изменится, у вас останется CITYNAME
действительный.
Еще немного объяснений, explode
(документация здесь) разбивает строку на элементы массива и разбивает ее, используя первый параметр, поэтому в этом случае передача -
создаст массив из 3 элементов, CITYNAME
, FREE
а также SERVICES
, current
(документация здесь) возьмет текущую позицию в массиве и вернет это значение, по умолчанию текущая позиция находится на первом элементе. Вы также можете индексировать отдельные элементы в вашем массиве, так что explode('-', strtoupper($check))[0]
также даст вам CITYNAME
и используя [1]
а также [2]
даст вам FREE
а также SERVICES
,
Изменить: я не видел черту о названиях городов. Это немного усложняет проблему, так как ваш URL содержит другие тире, от которых вы хотите избавиться. Если "-FREE-SERVICES" постоянна, и это всегда та часть, от которой вы хотите избавиться, то делать то, что предложил cale_b, - хорошая идея, которая должна заменить "free-services"
с ""
, Так что я +1 его ответ.
Редактировать 2: По какой-то причине мой ответ был выбран, для имен с тире вам нужно будет сделать что-то похожее на то, что предложил cale_b!
Один из нескольких способов. Кто-то здесь, вероятно, покажет вам некоторые регулярные выражения, которые делают лучше, но это удалит "бесплатные сервисы", а также заменит дефисы пробелами:
$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper(str_ireplace("free-services", "", $check));
echo str_replace("-", " ", $check);
$url = 'http://www.mywebsite.com/local/cityname-free-services';
$check = end(explode('/local/',$url));
$check = strtoupper($check);
echo $check; // prints CITYNAME-FREE-SERVICES
echo '<br>';
$first_element = strtoupper(str_ireplace(array("-free-services","-"),array(""," "),$check));
echo $first_element; // prints CITYNAME
$url = $_SERVER['REQUEST_URI'];
$check = end(explode('/local/',$url));
$check = strtoupper($check);
$check = explode("-", $check);
echo $check[0];