Разделить URL по PHP

Привет, я новичок в PHP, и для моего домашнего проекта мне нужна помощь, где я хочу разделить значения с помощью URL-адреса.

$url = "http://localhost/Sub/Key/Key_XYZ_1234.php";

URL также может быть:

$url = "http://localhost/Sub/Key/Key-XYZ-1234.php";

значение ключа может быть "ABC-TT" или "ABC_TT" или просто "ABC"

предполагаемый результат $v1 = value of Key;$v2 = value of XYZ;$v3 = value of 1234;

заранее спасибо

Возможный дубликат URL-адрес php взрывается

user10051234 20.03.2019 23:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Что-то типа....

//this is psuedo code, but you can look up the function names to see how to use them

$path=parse_url($url, PHP_URL_PATH);
$sep = "-";
if (strpos($path,$sep)===false){
   $sep = "_";
}
$pieces=explode($sep,$path);
$key=$pieces[0];
$a=$pieces[1];
$nums=$peices[2];
Ответ принят как подходящий

Вы можете сделать это с комбинацией parse_url, basename и preg_split. Мы используем preg_split, чтобы иметь дело с разделителем, который может быть либо -, либо _:

$url = "http://localhost/Sub/Key/Key-XYZ-1234.php";
$path = parse_url($url, PHP_URL_PATH);
$file = basename($path, '.php');
list($v1, $v2, $v3) = preg_split('/[-_]/', $file);
echo "\$v1 = $v1\n\$v2 = $v2\n\$v3 = $v3\n";

Выход:

$v1 = Key 
$v2 = XYZ 
$v3 = 1234

Демо на 3v4l.org

Привет, Ник. Спасибо за ответ... это действительно работает. Можете ли вы также помочь мне с этим URL-адресом "$url = "localhost/Sub/index.php?a1=key/key-XYZ-1234.php";" с тем же ответом. Заранее спасибо

Maddy 22.03.2019 07:46

@ Мэдди, это немного сложнее... какие части index.php?a1=key/key-XYZ-1234.php ты хочешь сохранить?

Nick 22.03.2019 07:59

Ключ, XYZ, только 1234

Maddy 22.03.2019 10:04

@ Мэдди, я думаю, изменение определения $path на $path = parse_url($url, PHP_URL_PATH) . parse_url($url, PHP_URL_QUERY); должно сработать

Nick 22.03.2019 12:04

Спасибо, Ник, ваш код сработал так, как хотелось... вы спасли меня... :) благодарю вас за помощь.

Maddy 22.03.2019 12:23

@ Мэдди, не беспокойся. Рад помочь.

Nick 22.03.2019 12:24

Другие вопросы по теме