Парсинг 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

Demo.

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