Meeraner Blatt
Kommunikationsplattform für interessierte Bürger in und um Meerane
MeeranerBlatt durchsuchen Gegründet im November 1989 – Online-Ausgabe seit 2004

MeeranerBlatt durchsuchen


0) {
$words = preg_split(‚/[^a-z0-9äöüß]+/i‘, $search, -1, PREG_SPLIT_NO_EMPTY);
$words = array_filter($words, function($w) {
return strlen(trim($w)) > 1;
});

/** @var Page[] $pages */
$pages = MySQL::getObjectsBySQL(‚Page‘, ‚SELECT ID,IDX,AUTHOR_ID,DOMAIN_ID,LANDING_PAGE,TITLE,CUSTOM_PATH,PATH,CONTENT,NULL as PRINT_VERSION,THEME_SETTINGS,GENERATION_DATE,LAST_CHANGE_DATE,PUBLICATION_STATE,PUBLICATION_DATE,PUBLICATION_LINK FROM PAGES WHERE PRINT_VERSION is not NULL ORDER BY IDX DESC‘);
$page_matches = 0;

$findAndB = function($pattern, $subject) use (&$page_matches) {
$regex = ‚|‘ . preg_quote($pattern, ‚|‘) . ‚|i‘;

$matches = array();
$match = preg_match($regex, $subject, $matches, PREG_OFFSET_CAPTURE);

if($match !== 1) {
$pos = strlen($subject) >= 250 ? strpos($subject, ‚. ‚, 250) + 1 : strlen($subject);
return $subject; // substr($subject, 0, $pos);
}

$page_matches += strlen($pattern);
$pos = $matches[0][1];

$matched = preg_match_all(‚/[.?!][^a-z0-9äöüß]/i‘, $subject, $matches, PREG_OFFSET_CAPTURE | PREG_PATTERN_ORDER);
if($pos < 250 || $matched === FALSE || $matched === 0) { $pos = 0; } else foreach($matches[0] as $match) { if($match[1] > $pos – 250) {
$pos = $match[1] < $pos ? $match[1] + 2 : $pos; break; } } if(preg_match('/[.?!][^a-z0-9äöüß]/i', $subject, $matches, PREG_OFFSET_CAPTURE, $pos + 250) !== 1) { $length = strlen($subject); } else $length = $matches[0][1] - $pos + 1; $result = substr($subject, $pos, $length); $result = preg_replace_callback( $regex, function($matched) { return '‚ . $matched[0] . ‚‚;
},
$result
);
return trim($result);
};

$results = array();
foreach($pages as $p) {
$page_matches = 0;

$title = $findAndB($search, Utils::antiHTMLInjection($p->getTitle()));
$path = $findAndB($search, Utils::antiHTMLInjection($p->getPath()));
$content = $findAndB($search, strip_tags($p->getContent(), ‚
‚));

$page_matches *= 2;

foreach($words as $keyword) {
$title = $findAndB($keyword, $title);
$path = $findAndB($keyword, $path);
$content = $findAndB($keyword, $content);
}

if($page_matches === 0)
continue;

$title = $title;
$path = $path;

$anchor = „getPath()) . „#search=“ . Utils::antiHTMLInjection($search) . „\“ class=\“search-result\“>

$title
$path

“ . ($content ? „

$content

“ : „“) . „„;

array_push($results, (object) array(
‚matches‘ => $page_matches,
‚html‘ => $anchor
));
}

usort($results, function($a, $b) {
return $b->matches – $a->matches;
});

foreach($results as $r)
echo $r->html;

if(count($results) === 0)
echo ‚

Es wurden keine passenden Ergebnisse gefunden.
Beachten Sie, dass Ihre Suchwörter aus mindestens 2 Buchstaben bestehen müssen.

‚;
} else
echo ‚

Ihre Suchwörter müssen aus mindestens 2 Buchstaben bestehen.

‚;
?>