2012-08-16 39 views
0

我使用PHP Simple HTML DOM Parser来抓取我需要的一些值。 我现在要做的是抓住一部分URL。通过PHP抓取外部网站上的链接的一部分

这是源的样子:

<a class="base-header-soldier-link" href="/bf3/soldier/someprofile/stats/123456789/"> 
    someprofile 
</a> 

我试图检索值“123456789”,而URL的其余部分。

我使用这个代码来检索的网址:

foreach($html->find('.base-header-soldier-name a') as $e) 
{ 
    $battlelog_id = $e->href; 
} 

所以基本上我想要去除它的URL的其余部分。

URL可以根据用户名更改,因此“someprofile”将被替换。

你们能帮助我吗?

+1

[什么都有你尝试过?](http://whathaveyoutried.com/) – DaveRandom 2012-08-16 14:57:20

+1

explode()使用/是一个开始,或者看一下preg_match() – Waygood 2012-08-16 15:09:29

+0

虽然我知道我可以很容易地检索用户名,但是在尝试去除URL的其余部分时遇到了问题。我根本没有这方面的知识。我已经试过使用“preg_replace”和“,但是我不能设法让它工作,我现在正在测试preg_match。 – 2012-08-16 15:14:36

回答

3

你可以做一对夫妇的方式最简单的就是basename()

<?php 
$url = '/bf3/soldier/someprofile/stats/123456789/'; 
echo basename($url);//123456789 
?> 

还是更可靠的方法是pathinfo()

<?php 
$url = '/bf3/soldier/someprofile/stats/123456789/'; 
$url_parts = pathinfo($url); 
/* 
Array 
(
    [dirname] => /bf3/soldier/someprofile/stats 
    [basename] => 123456789 
    [filename] => 123456789 
) 
*/ 

echo $url_parts['filename']; //123456789 
?> 

甚至explode()

<?php 
$url = '/bf3/soldier/someprofile/stats/123456789/'; 
$url_parts = explode('/', rtrim($url,'/')); 

echo end($url_parts);//123456789 
?> 
+0

它完美的工作!我不知道basename,但是谢谢! – 2012-08-16 15:44:09