регулярное выражение для анализа строки типа URL в PHP - PullRequest
0 голосов
/ 10 марта 2010

У меня есть такая строка:

http://www.youtube.com/v/Nnp82q3b844&hl=en_US&fs=1&

и я хочу извлечь

Nnp82q3b844

часть этого, то есть часть между / v / и первым &.

Есть ли простой способ сделать это в PHP?

Ответы [ 3 ]

8 голосов
/ 10 марта 2010

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

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

Приведенный выше пример выдаст:

Array
(
   [scheme] => http
   [host] => hostname
   [user] => username
   [pass] => password
   [path] => /path
   [query] => arg=value
   [fragment] => anchor
)
/path
2 голосов
/ 10 марта 2010

да, он не должен быть слишком настойчивым, посмотрите здесь для вашей справки или для понимания моего ответа

после для регулярного выражения

что-то вроде этого должно сделать

preg_match('|http://www.youtube.com/v/([^&]+)&hl=en_US&fs=1&|', $url, $match );
var_dump($match[1]);

[^&]+ означает в основном больше или один символ, который не является '&', '[]' определяют некоторые символьные возможности [^] делают его обратным, поэтому любой символ не в скобках, + означает 1 или более символов ,

Но вам лучше посмотреть самим!

Я действительно советую вам внимательно взглянуть на регулярные выражения, потому что это действительно может сэкономить вам часы работы, и как только вы поймете, как это работает, это действительно полезно!

1 голос
/ 10 марта 2010
$str="http://www.youtube.com/v/Nnp82q3b844&hl=en_US&fs=1&";
$s = parse_url($str);
$t = explode("/", $s["path"]);
print preg_replace("/&.*/","",end($t));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...