preg_match () шаблон регулярных выражений для моего URL - PullRequest
0 голосов
/ 16 февраля 2012

Я попытался создать шаблон для этого URL:

http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv 

Я просто хочу получить цифры 5016 - fileid из URL-адреса .. поэтому я использовал этот код

preg_match( '#http://media\.gilmanetwork\.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#', $markup, $matches );

поэтому, если я использую $matches[3], я должен получить номер 5016, верно?

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Взгляните на parse_url() в сочетании с pathinfo():

$url      = 'http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv';
$filename = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_FILENAME);

echo $filename;  // 5016

Этот подход имеет преимущество перед регулярными выражениями в том, что формат URL может изменяться - и, возможно, довольно широко - но до тех пор, пока имя файла ресурса является его идентификационным номером, этот код всегда будет давать правильный результат. 1010 *

1 голос
/ 16 февраля 2012

У тебя там большая ошибка. gilmanetwork против network. Попробуйте

'#http://media.network.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#'

Что приводит к

<?php
$markup = "http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv";
preg_match( '#http://media.network.com/flv/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)\.flv#', $markup, $matches );
print_r($matches);
// Array ( [0] => http://media.network.com/flv/ea03addc753ff8d80f6be4b49a414cfd/4f3d2012/5016.flv [1] => ea03addc753ff8d80f6be4b49a414cfd [2] => 4f3d2012 [3] => 5016 ) 
...