=======================第一页=======================楼 主:$str=<img src="
www.myurl.com"><a href="
www.links.com">;
我想匹配这些网址,正则怎样写?
自己写了一个,感觉好像是对的,但就是匹配不出来,请高手们指点
<?php
$str=<img src="
www.myurl.com">
<a href="
www.myurl.com">;
$mod="/[(<img src)|(<a href)]=\"(.*)\"/iU";
preg_match_all($mod,$str,$arr);
echo "<pre>";
print_r($arr);
echo "</pre>";
?>
楼 1: 1# xingfou 可以显示
- Array
- (
- [0] => Array
- (
- [0] => c="www.myurl.com"
- [1] => f="www.myurl.com"
- )
- [1] => Array
- (
- [0] => www.myurl.com
- [1] => www.myurl.com
- )
- )
复制代码 楼 2:[0] => Array
(
[0] => c="www.myurl.com"
[1] => f="www.myurl.com"
)
应该是这样才对:
[0] => Array
(
[0] =>src="www.myurl.com"
[1] =>href="www.myurl.com"
)
楼 3:- /\b(src|href)=\"([^^]*?)\"/i
复制代码 楼 4:- $mod = "/\b(src|href)=\"([^^]*?)\"/i";
- preg_match_all($mod,$str,$arr);
复制代码 楼 5:你再看看
楼 6:成了不?我这显示已经可以了,未知你那边?
- Array
- (
- [0] => Array
- (
- [0] => src="www.myurl.com"
- [1] => HREF="www.myurl2.com"
- )
- [1] => Array
- (
- [0] => src
- [1] => HREF
- )
- [2] => Array
- (
- [0] => [url]www.myurl.com[/url]
- [1] => [url]www.myurl2.com[/url]
- )
- )
复制代码 楼 7:差不多了哥们,还有点小问题,能否把[1]的数组去掉
Array
(
[0] => Array
(
[0] => src="www.myurl.com"
[1] => href="www.myurl.com"
)
[1] => Array
(
[0] => src
[1] => href
)
[2] => Array
(
[0] =>
www.myurl.com
[1] =>
www.myurl.com
)
)
楼 8:虽然能去 但去它作甚 你只需要用到第三个元素
楼 9:我倒是比较想咨询一下,有些写法很不正规的时候什么办法。
<a href="http://......>喜悦国际村</ a>
<a href=http://......>喜悦国际村</ a>
...
各种各样的,我估计是编辑把这些小东东弄没了,可浏览器是能认得出来的。我前段时间抓的时候发觉挺郁闷的....
=======================第2页=======================楼 1:也许可以使用一些html修复的代码,把代码修复成正规的html
再进行处理
楼 2:php tidy是否可以
楼 3:php tidy是否可以
shmiya 发表于 2010-7-7 16:09 

我用C#写的应用软件抓的
楼 4:如果是匹配链接地址这种简单的活不用tidy出马
- $clips = array();
- $str = <a href=http://www.google.com>;
- preg_match(~<a.+href=["\]?([^"\\s>]+)~is, $str, $clips);
- echo $clips[1];
复制代码 楼 5:比较的麻烦,如果单是引号去了还无所谓,如果后面还有class什么的就麻烦了,看看谁还有好的解决办法
楼 6:我一般使用php来做抓取
当然了,有些人比较喜欢桌面程序,这样php就不合适了
楼 7:不会很麻烦 这种正则就认准了属性值的规则就行
首先是href如果想加src的也行 无非是(?:href|src)就解决了
之后是等号(?:href|src)=
等号之后无非是有没有引号和哪种引号的问题(?:href|src)=["]?
属性值里不能出现以下几种字符:空白、大于号和引号也就是(?:href|src)=["]?([^">\s]+)
楼 8:不会很麻烦 这种正则就认准了属性值的规则就行
首先是href如果想加src的也行 无非是(?:href|src)就解决了
之后是等号(?:href|src)=
等号之后无非是有没有引号和哪种引号的问题(?:href|src)=["]?
属性值里不能出 ...
村长夫人 发表于 2010-7-8 14:38 
额,关键的就是空格和引号 ... 应该差不多了
感谢用户[
互联网用户] IP[
38.107.191.84] 时间[
2010-09-07 20:50:10]提供辛勤劳动!