-3

嗨,我想用正则表达式制作一个脚本,我需要用 php 对所有 gif 图像 url 进行转换。这就是我所做的

<?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. 我需要用 url 捕捉 gif 图像
  2. 我需要这个用 php 和 regex 构建的
4

1 回答 1

2

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

/(?:(?:(?:[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);

这是此正则表达式的在线演示,使用此页面的源代码(在我进行此编辑之前)(查看preg_match_all选项卡)。

于 2013-11-07T22:49:38.360 回答