Использование регулярных выражений для получения строки из URL? - PullRequest
2 голосов
/ 30 июня 2011

Regex - это мой bete noire, может кто-нибудь помочь мне изолировать строку от URL?

Я хочу получить имя страницы из URL, который может появиться любым из следующих способов из формы ввода:

https://www.facebook.com/PAGENAME?sk=wall&filter=2
http://www.facebook.com/PAGENAME?sk=wall&filter=2
www.facebook.com/PAGENAME
facebook.com/PAGENAME?sk=wall

... и т. Д.

Я не могу найти способ изолировать строку после .com/, но до ? (если присутствует вообще). Это preg_match, заменить или разделить?

Если кто-нибудь может порекомендовать особенно понятное и вводное руководство по регулярным выражениям, которое он считает полезным, это будет оценено.

Ответы [ 4 ]

6 голосов
/ 30 июня 2011

Вы можете использовать функцию parse_url и затем получить последний сегмент из пути URL:

$parts=parse_url($url);
$path_parts=explode("/", $parts["path"]);
$page=$path_parts[count($path_parts)-1];
2 голосов
/ 30 июня 2011

Для изучения и тестирования регулярных выражений я нашел RegExr, онлайн-инструмент, очень полезный: http://gskinner.com/RegExr/

Но, как уже упоминалось, анализ URL с соответствующими функциями может быть лучше в этом случае.

1 голос
/ 30 июня 2011

Я думаю, вы можете использовать эту функцию php (parse_url) напрямую вместо использования регулярных выражений.

0 голосов
/ 30 июня 2011

Используйте что-то вроде:

substr(parse_url('https://www.facebook.com/PAGENAME?sk=wall&filter=2', PHP_URL_PATH), 1);
...