首页 / 正则 / 求问一个正则表达式的问题
求问一个正则表达式的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了求问一个正则表达式的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2191字,纯文字阅读大概需要4分钟。
内容图文
想匹配一个网页地址中的所有图像地址,写了正则表达式如下:$reg="/<img\s*.*src\s*=\s*[\"|\']?\s*([^>\"\']*)/i";
为什么像如下的图像文件地址:
只能匹配到:
<img src="https://www.gxlcms.com/Images/Album
到空格的时候就终止了?
([^>\"\']*)这个条件应该不包含空格啊?
回复讨论(解决方案)
正则没错,建议贴出你的代码以供分析。
$reg="/<img\s*.*src\s*=\s*[\"|\']?\s*([^>\"\']*)/i";$s = '';preg_match_all($reg, $s, $m);print_r($m);Array
(
[0] => Array
(
[0] =>
$url=$_POST['url']; $rs=parse_url($url); $main_url=$rs['host']; $baseurl=substr($url,0,strrpos($url, '/')+1); $message=file_get_contents($url); $reg="/<img\s*.*src\s*=\s*[\"|\']?\s*([^>\"\']*)/i"; preg_match_all($reg, $message, $matches); for($i=0;$i<count($matches[0]);$i++){ $matches[1][$i]=strtolower($matches[1][$i]); if(!strpos('a'.$matches[1][$i], 'http')){ if(strpos('a'.$matches[1][$i], '/')==1){ $matches[1][$i]='http://'.$main_url.$matches[1][$i]; }elseif (strpos('a'.$matches[1][$i], '../')==1){ $matches[1][$i]=str_replace('../', '/', $matches[1][$i]); $matches[1][$i]='http://'.$main_url.$matches[1][$i]; }else{ $matches[1][$i]=$baseurl.$matches[1][$i]; } } } $img_array=array_unique($matches[1]);
下面是对$img_array的处理了,试了一下新浪首页,百度啊什么的,好多图片地址无法匹配出来,最明显的就是图片路径里包含空格的
$reg="/<img\s*.*src\s*=\s*[\"|\']?\s*([^>\"\']*)/i";$s = '';preg_match_all($reg, $s, $m);print_r($m);Array
(
[0] => Array
(
[0] =>
$reg="/<img\s*.*src\s*=\s*[\"|\']?\s*([^>\"\']*)/i";$s = '';preg_match_all($reg, $s, $m);print_r($m);Array
(
[0] => Array
(
[0] => Array( [0] => Array ( [0] =>
数组没有完整输出。。后面的括号都没了
通过“查看网页源代码”观看
内容总结
以上是互联网集市为您收集整理的求问一个正则表达式的问题全部内容,希望文章能够帮你解决求问一个正则表达式的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。