2011-07-09 22 views
0

这里有人知道一个magnet-URI -parser for PHP?验证它,或者从中提取一些信息?用于PHP的磁链接库

+0

什么是你的问题中提取一些来自magnet-URI的数据?请解释你迄今为止所做的以及你运行的问题。 – hakre

+0

可能相关:[创建torrent文件信息哈希问题](http://stackoverflow.com/questions/6527357/problem-creating-info-hash-of-torrent-file) – hakre

回答

2

如果您正在寻找这样的事情:

Magnet URI: magnet:?xt=urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C (valid) 

    Display Name .... (dn): 
    eXact Length .... (xl): 
    eXact Topic ..... (xt): urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C 
    Acceptable Source (as): 
    eXact Source .... (xs): 
    Keyword Topic ... (kt): 
    Manifest Topic .. (mt): 
    address TRacker . (tr): 

take a look at the Demo

不能说这是否符合您的需求,您的问题是不明确的。所以请留言。

+0

我知道如何提取名称/对,但我会认为有更复杂的验证规则。另外,我如何解决精确主题的文件名和大小? – Wieger

+0

没有磁铁链接是简单的,没有更复杂的URI验证规则。但是,您可以验证可以从该URI中提取的数据。但是,这是每个数据类型自己的一个域。例如。关键字验证取决于你希望他们如何验证。确切的主题不是文件名,并且不包含大小,因此您无法找到文件名或大小。您只能为URI本身搜索p2p磁力查找服务。但是这与你所要求的URI解析和验证完全无关。 – hakre

2

如果你只需要的字段,这里是一个快速和肮脏的一个班轮:

$link = 'magnet:?xt=urn:btih:0eb69459a28b08400c5f05bad3e63235b9853021&dn=Splinter.Cell.Blacklist-RELOADED&tr=udp%3A%2F%2Ftracker.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80&tr=udp%3A%2F%2Fopen.demonii.com%3A1337'; 

parse_str(str_replace('tr=','tr[]=',parse_url($link,PHP_URL_QUERY)),$query); 

print_r($query); 

应该产生:

Array 
(
    [xt] => urn:btih:0eb69459a28b08400c5f05bad3e63235b9853021 
    [dn] => Splinter.Cell.Blacklist-RELOADED 
    [tr] => Array 
     (
      [0] => udp://tracker.com:80 
      [1] => udp://tracker.publicbt.com:80 
      [2] => udp://tracker.istole.it:6969 
      [3] => udp://tracker.ccc.de:80 
      [4] => udp://open.demonii.com:1337 
     ) 
) 
+0

伟大的工作!正是我需要的!谢谢! –