извлечение URL-адресов с страницы с регулярным выражением

У меня есть этот бит php который извлекает все URL-адреса со страницы:

 $regex = '/https?\:\/\/[^\" ]+/i'; preg_match_all($regex, $page, $matches); $links = ($matches[0]); foreach($links as $link) { echo $link.'<br />'; } 

Как мне изменить его, чтобы извлечь не все ссылки, а только те, которые соответствуют определенному частичному URL-адресу, в данном случае: « http://www.site.com/artist/ », где результат, который я ищу, – это список, подобный :

http://www.site.com/artist/Nirvana/

http://www.site.com/artist/Jayz/

И так далее.

Solutions Collecting From Web of "извлечение URL-адресов с страницы с регулярным выражением"

Изменяя разделители на восклицательные знаки, нет необходимости в дополнительных символах эвакуации. Класс символов \s сопоставляет символы пробелов, такие как вкладки, пробелы и новые строки. Я также убеждаюсь, что мы охватываем оба типа котировок (в случае изменения страницы).

 $regex = '!https?://www.site.com/artist/[^\'"\s]+!i'; preg_match_all($regex, $page, $matches); $links = ($matches[0]); foreach($links as $link) { echo $link.'<br />'; } 
 $regex = 'http:\/\/www.site.com\/artist\/[^" ]+\/'; 

Конечно, что происходит после того, как часть artist зависит от того, что считается приемлемым.

Если вы принимаете только буквы и цифры, просто используйте [a-zA-Z0-9]+ .

Где эти URL-адреса? Они на веб-странице? Попробуй это:

http://www.site.com/artist/ . * \ b

ОБНОВЛЕНИЕ 1:

Если вы используете PHP, попробуйте следующее:

 preg_match_all('%http://www\.site\.com/artist/.*\b%', $html, $urls, PREG_PATTERN_ORDER); $urls = $urls[0];