使用php preg_match_all提取信息

时间:2014-09-25 11:36:27

标签: php arrays preg-match-all trim

我试图修改脚本以提取信息:

有些页面例如:

<ul class="tags">
<li><div class="tag"><a href="http://www.url1.com" title="url1">title 1</a></div></li>
<li><div class="tag"><a href="http://www.url2.com" title="url2">title 2</a></div></li>
</ul>

我想获得标题1,标题2

我有这段代码:

$m=array();
preg_match_all("/<a href="(.*)" title="(.*)">(.*)<\/a>/i", $buff,$m);
$info['tags']=trim(strip_tags($m[3]));
$cats=array_map('trim',$cats);
$info['tags']=implode(',',$cats);

但是我得到了trim和array_map的错误。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

代码中的第一个错误位于第3行:

$info['tags']=trim(strip_tags($m[3]));

这里函数strip_tags应该以字符串作为参数,但$m[3]是数组。快速解决方法是:

$info['tags']=array_map('strip_tags',array_map('trim',$m[3]));

$ info [tags]现在是:

[tags] => Array
   (
       [0] => title 1
       [1] => title 2
   )

比应用implode函数所以:

$info['tags'] = implode(',', $info['tags']);

干杯,Bea