您好我希望得到以下所有独特的匹配项。我该怎么办?
preg_match_all('#http://[\S]+(?:jpe?g|png|gif)#is', $content, $filtered);
$filtered = array_unique($filtered[0]);
foreach($filtered as $value){
${'varpics' . $i} .= '<img width="200px" height="200px" src="'.$value.'"><br>'; }
我仍然得到双重比赛。
答案 0 :(得分:3)
没有。只需将结果传递给array_unique。
除非您希望真正了解preg_replace_callback并将匹配推送到集合中。
<?php
$content = <<<HTML
<img src="http://www.mysite.com/image1.jpg" />
<img src="http://www.mysite.com/image2.gif" />
<img src="http://www.mysite.com/image1.jpg" />
HTML;
preg_match_all('#http://[\S]+(?:jpe?g|png|gif)#is', $content, $matches);
$images = array_unique($matches[0]);
var_dump($images);
完美适合我。输出:
array
0 => string 'http://www.mysite.com/image1.jpg' (length=32)
1 => string 'http://www.mysite.com/image2.gif' (length=32)
但是你的代码还有很多其他问题。例如,$i
定义在哪里?你为什么要尝试定义这样的变量?使用数组,而不是附加数字的名称......我甚至不确定这是否是有效的语法。