用于提取特定href链接的PHP脚本

时间:2012-10-27 16:17:24

标签: php regex extract

  

可能重复:
  Grabbing the href attribute of an A element

我想创建一个PHP脚本,从网页(我的)中提取所有href链接,但只在其字符串中链接“/ view /”。

http://www.example.com/roger/that =>未提取

http://www.example.com/roger/view/that =>提取

如果可能的话,所有链接都将在数组中设置

所以基本上脚本将在我的管理部分中,我会运行它来获取包含数组中特定字符串'/ view /'的所有链接,以便稍后在另一个脚本中使用。

我已经完成了我的研究并发现了这个脚本,但无法将其修改为仅包含特定链接(使用“/ view /”)

我知道你们不是我的奴隶,所以即使你有修改现有剧本的任何提示,我也会很高兴!

我的剧本 http://pastebin.com/gYf9DZ8i

谢谢!

3 个答案:

答案 0 :(得分:1)

使用 file_get_contents 获取网页内容。

$input = file_get_contents("http://www.yourpage.php");

然后执行 preg_match 以提取所需的一组链接。

正则表达式:/\<a href(.*?\/view\/.*?)<\/a>/

$pattern = '/\<a href(.*?\/view\/.*?)<\/a>/';
preg_match_all($pattern, $input, $matches);
print_r($matches);

(的 Example

答案 1 :(得分:0)

你只需要改变这个:

preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
                "(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",
                $var, &$matches);

进入这个

preg_match_all ("/<a.*href=\"([^\"]*\/view\/[^"]*)\"/", $var, &$matches);

答案 2 :(得分:0)

$var = file_get_contents("http://www.entendu.info");

preg_match_all ("/<a\s+[^>]*?\bhref\s*=\s*([\'\"])(?=[^\'\"]*\/view\/)(.*?)[\'\"]/", 
  $var, &$matches);    

$matches = $matches[2];

foreach($matches as $var)
{    
  print($var . "<br>\n");
}