Использование PHP для разделения URL - PullRequest
2 голосов
/ 20 декабря 2010

Я создаю прокси-сервер PHP, где он принимает URL-адрес и подтверждает, что находится в моем списке серверов.

При импорте URL-адреса из приложения я запустил его, когда мне понадобилось 2 тега синтаксического анализатора. мне нужно, чтобы он разделился вдоль "\?" тег, а также строка, в моем случае, «экспорт?»

Я использую preg для первого тега. Принимает ли это строки, как мой тег экспорта, или есть другой способ сделать это?

Пожалуйста, дайте мне знать, как это сделать, или если у вас есть дополнительные вопросы.

Ответы [ 4 ]

13 голосов
/ 20 декабря 2010

Поскольку ircmaxell уже указал в комментариях , PHP уже имеет функцию для анализа URL: parse_url.

И когда у вас естьURL-путь (я предполагаю, что ваш export? суффикс пути плюс индикатор запроса), вы можете использовать explode, чтобы разбить путь на сегменты пути:

$path = parse_url($url, PHP_URL_PATH);
$segments = explode('/', $path);

Вы можетезатем получите последний сегмент пути с одним из следующих:

end($segments)
$segments[count($segments)-1]

И чтобы справиться с конечными слешами, вы можете использовать rtrim($path, '/') для их удаления.

Все вместе:

$url = 'http://www.example.com/subfolders/export?';
$path = parse_url($url, PHP_URL_PATH);
$segments = explode('/', rtrim($path, '/'));
echo end($segments);
0 голосов
/ 20 декабря 2010

Эй, ребята, в итоге я использовал explode, который искал строку (export?), А затем я использовал команду preg split для поиска \ ?.это дало мне то, что я искал.спасибо, ребята.

0 голосов
/ 20 декабря 2010

Регулярные выражения - это совпадения строк, которые могут также включать совпадения переменных.Поскольку ? включено в ?, вы должны сделать свой сплит дважды.Один раз на export? первый и второй проход на каждом из них с ? в качестве разделителя.Как написано ниже, вы просто разделяете одну из двух разных строк.

$first = preg_split('export\?', ...);
for ($first) {
        array_push ($second,preg_split('\?', ...)');
}

Это не совсем корректный PHP, но я надеюсь, что это достаточно близкий псевдокод.

0 голосов
/ 20 декабря 2010

Регулярное выражение должно сработать, что-то вроде приведенного ниже будет работать.Это то, что Django использует в своем диспетчере URL

r'^export/$'
...