2012-05-18 1 views
0

Я пытаюсь соответствовать значению запроса v в следующем регулярном выражении:Как я могу сопоставить url в php с помощью регулярного выражения?

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-z0-9-_]+) 

Образец URL:

http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1 

адрес всегда WWW, и я только пытаюсь соответствовать v значение. Кто-нибудь знает, что не так с моим синтаксисом?

ответ

1

вы забыли прописные буквы

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+) 
+0

модификатор без учета регистра также будет работать (и может быть лучше, так как домен может быть смешанным) – Spudley

2

Используйте функцию parse_url(). Это проще в использовании:

$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1"); 

echo $url_components['query']; 

Оттуда я думаю, что вы можете сделать все остальное и отрезать первую пару букв. Как только вы сделаете это, у вас останутся только вещи после v=.

0

Вы не избежать периода ". в video.php. Я также использовать другой разделитель, если я спасаясь пути/URL, - как это:

preg_match("#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches); 

Если V = находится в середине строки запроса,

v=([^&]*) 

.. будет соответствовать все вверх на другой символ &, на всякий случай символы, отличные от альфа и _, - по какой-то причине попадают туда.

Смежные вопросы