急!关于正则表达式解析IMG中SRC内容的问题,请高手指点?? 主要是获取远程图片路径,还有文件名称,请各位高手指点!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 点我的blog 专业讲正则的。N个人问这个问题了。。 preg_match (pattern,str,match)数组的第0位是全匹配,第一位是满足()里面的东西。 <?$contant="aaa<img src='../images/bannersms.jpg' fdsafds>aaa"; preg_match_all("/<img.+src=('|\")(.+)\\1/isU",$contant,$a); 注意这里的很经典的\\1 是将第一个()中的东西用来配对. print_r( $a ); 对数组来解析 $a[0] 为<img src='../images/bannersms.jpg' fdsafds> ?>()中的内容将后被缓存到数组中去。 谢谢大哥,可是我还有个问题,就是src=有3中情况 就是=号后面可是是空也可以是'也可以是" 请问大哥你这个正则是完全包含了这3种情况嘛?好像漏了空吧??? 那如果类似的地址$contant="aaa<img src=../images/bannersms.jpg fdsafds>aaa"; 那样的话那段正则应该怎么写 注意src=后面没有'或" 而且小弟想得到那个文件的名称比如上面的 bannersms.jpg应该怎么做??? <img[^>]*?src\s*=\s*["']?([^"'\s>]*)[^>]*>$match[1]就是src的属性值专业正则 写出这样的表达式不怕被人笑/<img.+src=('|\")?(.+)\\1/isU 大哥我想知道的是一条正则里面同时吧文件名前面的地址和文件名区分开来比如说:<IMG src="http://www.1t1t.com/upload/2007-05/s_591949_atm00003.jpg" border="0">我现在就是想利用一条正则得到 arry(1)=>"http://www.1t1t.com/upload/2007-05/" arry(2)=>"s_591949_atm00003.jpg" 不好意思可能我没表达清楚,因为小弟接下去要做的是利用preg_replace()来进行模式替换,把arry(1)的字符串使用我自定义的变量来表示,请各位大哥继续接分!!谢谢! 绝全的'/\<img[^\>]+src[\n\r\s]*=[\n\r\s]*([\"\']?)[^\>\1]+\1[^\>]*\>/i' <img[^>]*?src\s*=\s*["']?((?:\w+://)?(?:\w*/)*)([^"'\s>]*)[^>]*> $match[1] 就是array(1) $match[2] 就是array(2) 这个不是PHP的写法是java和.net的写法 有问题也是*?的问题 你把?去掉就可以了 参数用isU /<img[^>]*src\s*=\s*["']?((?:\w+://)?(?:\w*/)*)([^"'\s>]*)[^>]*>/i估计就可以了 关于src=... src='..' src="..."取出后,再判断一下不就可以了? /*提取全部IMG标签*/<?phpset_time_limit(0);$url = "http://www.yahoo.com/";$fp = fopen($url,"r");while(!feof($fp)){ $string.=fgets($fp,128);}fclose($fp);preg_match_all("/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe",$string,$a,PREG_SET_ORDER);$u = parse_url($url);$p = $u['scheme']."://".$u['host'].'/'.$u['path'];foreach($a as $aa){ if(!preg_match("/http:/",$aa[2])){ echo "<img src=\"".$p.$aa[2]."\"><P>"; }else{ echo "<img src=".$aa[2]."><P>"; }} 谢谢大家大家看看我写的这条还算可以嘛?$string='<IMG src="http://www.1t1t.com/upload/2007-05/s_591949_atm00001.jpg" border=0>';$regx = "/<img src=('|\")(.+\/)([^\/]+\.(gif|jpg|bmp))\\1[^>].+>/isU";preg_match_all($regx, $string, $arrayout,2);foreach ($arrayout as $k=>$v) { echo $v[2]."<br>"; echo $v[3]."<br>"; }请大家看看 求教一mysql插入数据问题 PHP很简单吗? 如何用PHP做网站 运行PHP安装程序时出现以下提示,该怎么解决呢?(在线等候) 火狐提示:内容编码错误,thinkPHP有麻烦 远程mysql连接问题 急,帮帮忙:怎么把WEB内容导入现有的EXCEL文件模板 php有什么好办法把mysql里面枚举型字段的各个项目读出来? 给看看?急急! php开发手机wap应用,utf-8-->gb2312的转换函数如何写? php搜索的问题 linux 郵件發送
N个人问这个问题了。。
?>
()中的内容将后被缓存到数组中去。
$match[1]就是src的属性值
专业正则 写出这样的表达式不怕被人笑
/<img.+src=('|\")?(.+)\\1/isU
'/\<img[^\>]+src[\n\r\s]*=[\n\r\s]*([\"\']?)[^\>\1]+\1[^\>]*\>/i'
有问题也是*?的问题 你把?去掉就可以了 参数用isU
估计就可以了
set_time_limit(0);
$url = "http://www.yahoo.com/";
$fp = fopen($url,"r");
while(!feof($fp)){
$string.=fgets($fp,128);
}
fclose($fp);
preg_match_all("/<img.+src=('|\"|)?(.*)(\\1)([\s].*)?>/ismUe",$string,$a,PREG_SET_ORDER);
$u = parse_url($url);
$p = $u['scheme']."://".$u['host'].'/'.$u['path'];
foreach($a as $aa){
if(!preg_match("/http:/",$aa[2])){
echo "<img src=\"".$p.$aa[2]."\"><P>";
}else{
echo "<img src=".$aa[2]."><P>";
}
}
$regx = "/<img src=('|\")(.+\/)([^\/]+\.(gif|jpg|bmp))\\1[^>].+>/isU";
preg_match_all($regx, $string, $arrayout,2);foreach ($arrayout as $k=>$v) {
echo $v[2]."<br>";
echo $v[3]."<br>";
}
请大家看看