Парсинг URL с php для удаления или изменения разделов
Допустим, у вас есть два URL.
http://testing.org/directory/index.php/arg1/arg2
Array ( [scheme] => http [host] => testing.org [path] => /directory/index.php/arg1/arg2 )
Или как то так:
http://testing.org/index.php/arg1/arg2
Array ( [scheme] => http [host] => testing.org [path] => /index.php/arg1/arg2 )
Я знаю, что вы можете разбить URL с помощью parse_array(). Когда я это делаю, путь - это все после 'testing.org'. В первом примере переменная пути 1 в массиве - это "каталог", а во втором примере переменная пути 1 - "index.php".
Я пытаюсь разгадать, чтобы сделать две разные вещи. Сначала удалите все после index.php, но я продолжаю шарить. Кроме того, как мне удалить '/directory/' из первого URL?
Но я также хотел бы узнать, как заменить часть пути тоже.
1 ответ
Решение
Вы можете использовать комбинацию parse_url()
и регулярное выражение для достижения этой цели. Приведенное ниже регулярное выражение удалит все после index.php
в пути URL.
$parts = parse_url($url);
$scriptname = preg_replace('#(index\.php)/.*#', '$1', $parts['path']);
$result = $parts['scheme'].'://'. $parts['host'] . $scriptname;
Для двух URL, на которые задан вопрос, результат будет следующим:
http://testing.org/directory/index.php
http://testing.org/index.php