- if (count(array_intersect($linktags, $searchtags)) == count($searchtags)) {
- $filtered[$l['linkdate']] = $l;
+ $found = true;
+ for ($i = 0 ; $i < count($searchtags) && $found; $i++) {
+ // Exclusive search, quit if tag found.
+ // Or, tag not found in the link, quit.
+ if (($searchtags[$i][0] == '-' && in_array(substr($searchtags[$i], 1), $linktags))
+ || ($searchtags[$i][0] != '-') && ! in_array($searchtags[$i], $linktags)
+ ) {
+ $found = false;
+ }
+ }
+
+ if ($found) {
+ $filtered[$link['linkdate']] = $link;