正则表达提取标签属性值 本帖最后由 huangdancs 于 2012-10-20 15:31:41 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php$str='<td class="image"> <a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)"><img src="http://ia.media-imdb.com/images/M/MV5BMjMyOTM4MDMxNV5BMl5BanBnXkFtZTcwNjIyNzExOA@@._V1._SX54_CR0,0,54,74_.jpg" height="74" width="54" alt="The Amazing Spider-Man (2012)" title="The Amazing Spider-Man (2012)"></a> <a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)"> </td>';$patten = '/title="(.*)"/Uis';if (preg_match ( $patten, $str, $array )) {print_r($array);}echo "<br>";$patten1 = '/<a href=".*" title="(.*)">/Uis';if (preg_match_all ( $patten1, $str, $array1 )) {print_r($array1[1]);}?> $string='<td class="image"><a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)1"><img src="http://ia.media-imdb.com/images/M/MV5BMjMyOTM4MDMxNV5BMl5BanBnXkFtZTcwNjIyNzExOA@@._V1._SX54_CR0,0,54,74_.jpg" height="74" width="54" alt="The Amazing Spider-Man (2012)" title="The Amazing Spider-Man (2012)3"></a><a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)2"></td>'; if (preg_match_all ( '/(?<=\s)title="(.*)"/Ui', $string, $arr )) { var_dump($arr); } /* <br>array(2) { [0]=> array(3) { [0]=> string(38) "title="The Amazing Spider-Man (2012)1"" [1]=> string(38) "title="The Amazing Spider-Man (2012)3"" [2]=> string(38) "title="The Amazing Spider-Man (2012)2"" } [1]=> array(3) { [0]=> string(30) "The Amazing Spider-Man (2012)1" [1]=> string(30) "The Amazing Spider-Man (2012)3" [2]=> string(30) "The Amazing Spider-Man (2012)2" }} */ 谢谢,达到了目的。但是我不是很清楚是如何往$array和$array1里面存数据的。能指点一下吗? 你可以把$array1[1]中的数组整合到其他数组里 如$all['title']=$array1[1]数据取到怎么用就是看需求的了 不好意思,可能是我问得不清楚。我是想知道为什么array[0]的结果是:title="The Amazing Spider-Man (2012)"而array[1]的结果是:The Amazing Spider-Man (2012) preg_match preg_match_all 用法不同造成的preg_match_all结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组, 以此类推. 可以多看看手册 正则方面的 最好有个系统的了解 $html = new simple_html_dom();$html->load('<td class="image"> <a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)"><img src="http://ia.media-imdb.com/images/M/MV5BMjMyOTM4MDMxNV5BMl5BanBnXkFtZTcwNjIyNzExOA@@._V1._SX54_CR0,0,54,74_.jpg" height="74" width="54" alt="The Amazing Spider-Man (2012)" title="The Amazing Spider-Man (2012)"></a> </td>');$title = $html->find('.image a');print_r($title[0]->attr['title']);The Amazing Spider-Man (2012) 地址栏 Id 问题!和 重复登录问题! 我是菜鸟 请教各位! 程序生成chm文档,求帮助 php下拉框选中以后提交刷新以后无显示 求PHP框架 下一步,我该怎么办呢? 请大家推荐一个好的php论坛,并说出理由。 为什么这段JS提示没有权限?? false!=$file=readdir($fp)这种表示法是什么意思啊? smarty 模板路径问题 散分!以后很少来这里了,谢谢以前大家的帮助。 关于php rand 函数,要求不重复地随机成了某个范围内的数字的问题 新手请教preg_match问题
<?php
$str='<td class="image">
<a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)"><img src="http://ia.media-imdb.com/images/M/MV5BMjMyOTM4MDMxNV5BMl5BanBnXkFtZTcwNjIyNzExOA@@._V1._SX54_CR0,0,54,74_.jpg" height="74" width="54" alt="The Amazing Spider-Man (2012)" title="The Amazing Spider-Man (2012)"></a>
<a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)">
</td>';
$patten = '/title="(.*)"/Uis';
if (preg_match ( $patten, $str, $array )) {
print_r($array);
}
echo "<br>";
$patten1 = '/<a href=".*" title="(.*)">/Uis';
if (preg_match_all ( $patten1, $str, $array1 )) {
print_r($array1[1]);
}
?>
$string='<td class="image"><a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)1"><img src="http://ia.media-imdb.com/images/M/MV5BMjMyOTM4MDMxNV5BMl5BanBnXkFtZTcwNjIyNzExOA@@._V1._SX54_CR0,0,54,74_.jpg" height="74" width="54" alt="The Amazing Spider-Man (2012)" title="The Amazing Spider-Man (2012)3"></a><a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)2"></td>';
if (preg_match_all ( '/(?<=\s)title="(.*)"/Ui', $string, $arr )) {
var_dump($arr);
}
/*
<br>array(2) {
[0]=>
array(3) {
[0]=>
string(38) "title="The Amazing Spider-Man (2012)1""
[1]=>
string(38) "title="The Amazing Spider-Man (2012)3""
[2]=>
string(38) "title="The Amazing Spider-Man (2012)2""
}
[1]=>
array(3) {
[0]=>
string(30) "The Amazing Spider-Man (2012)1"
[1]=>
string(30) "The Amazing Spider-Man (2012)3"
[2]=>
string(30) "The Amazing Spider-Man (2012)2"
}
} */
谢谢,达到了目的。
但是我不是很清楚是如何往$array和$array1里面存数据的。能指点一下吗?
如$all['title']=$array1[1]
数据取到怎么用就是看需求的了
不好意思,可能是我问得不清楚。
我是想知道为什么array[0]的结果是:title="The Amazing Spider-Man (2012)"
而array[1]的结果是:The Amazing Spider-Man (2012)
preg_match_all
结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组), $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组, 以此类推.
可以多看看手册 正则方面的 最好有个系统的了解
$html = new simple_html_dom();
$html->load('<td class="image">
<a href="/title/tt0948470/" title="The Amazing Spider-Man (2012)"><img src="http://ia.media-imdb.com/images/M/MV5BMjMyOTM4MDMxNV5BMl5BanBnXkFtZTcwNjIyNzExOA@@._V1._SX54_CR0,0,54,74_.jpg" height="74" width="54" alt="The Amazing Spider-Man (2012)" title="The Amazing Spider-Man (2012)"></a>
</td>');
$title = $html->find('.image a');
print_r($title[0]->attr['title']);
The Amazing Spider-Man (2012)