嗨我想用正则表达式创建一个脚本 我需要用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阅读了一些例子,但我觉得还不够 感谢
答案 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
标签)。