正则表达式如何捕获以.gif结尾的网址

时间:2013-11-07 22:44:32

标签: php regex

嗨我想用正则表达式创建一个脚本 我需要用php导盲所有gif图像网址。 这就是我做的事情

<?php
$subject = file_get_contents("http://www.9gag.com");
$search="^https?://(?:[a-z\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|gif|png)$";
preg_match($search, $subject, $result); 
print_r($result);
?>

我的例子不起作用。我刚刚搜索了stackoverflow.com阅读了一些例子,但我觉得还不够 感谢

  1. 我需要用网址
  2. 来捕捉gif图片
  3. 我需要用php和regex构建

1 个答案:

答案 0 :(得分:2)

你的正则表达式以^和$开头,意味着唯一的匹配必须以URL开头和结尾,而不是在其中的某处包含URL。试试这个(将this URL regex与你的组合):

/(?:(?:(?:[A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)(?:(?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)(?:jpg|gif|png)/

或在PHP中:

preg_match_all("/(?:(?:(?:[A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)(?:(?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)(?:jpg|gif|png)/", $input_lines, $output_array);

这个正则表达式的here is an online demo使用此页面的源代码(在我进行此编辑之前)(查看preg_match_all标签)。