Leitgedanken/func_highlight.php
2022-11-21 09:47:28 +01:00

75 lines
2.3 KiB
PHP

<?php
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
function highlight_results($text, $suchart, $query, $split="|", $ln_zaehler="1") {
if ($suchart == 1){
$suchopt = "{0,1}";
}else{
$suchopt = "";
}
$query1 = preg_replace('/\s{2,}/sm',' ',$query,PREG_SET_ORDER); //Mehr als zwei leerzeichen entfernen
$query2 = preg_replace("/(\+{0,}\*{0,}%{0,})(\"([^\"]+)\"\*{0,}%{0,}\+{0,}|\+{0,}\*{0,}%{0,}(\w+)\*{0,}%{0,}\+{0,})/", '|\2', $query1); // gleich wie in suche.php: + * und " richtig interpretieren
$query3 = preg_replace("/\-{1,}\|\"([^\"]+)\"\s*|\-{1,}\|(\w+)\s*/", '', $query2); // Alle Begriffe die ein Minus haben entfernen
$query4 = preg_replace("/\"|\\\/", '', $query3); // Hochkomma, Backlash entfernen
$query5 = preg_replace("/\s{0,1}\|/", '|', $query4); // Leerzeichen in Verbindung mit | entfernen. Es kann nur 1 Leerzeichen geben, wegen query1
$query6 = preg_replace("/^\||\s$/", '', $query5); // Erstes | entfernen und letztes Leerzeichen
$query6 = str_replace (array("ä", "ö", "ü", "ß", "Ä", "Ö", "Ü"), array("&auml;", "&ouml;", "&uuml;", "&szlig;", "&Auml;", "&Ouml;", "&Uuml;"), $query6);
$results = explode($split, $query6);
foreach($results as $result) {
if($ln_zaehler == 6){
$zahl_r = 255;
$zahl_g = 150;
$zahl_b = 255;
$ln_zaehler = 1;
}
if($ln_zaehler == 5){
$zahl_r = 150;
$zahl_g = 150;
$zahl_b = 255;
$ln_zaehler = 6;
}
if($ln_zaehler == 4){
$zahl_r = 150;
$zahl_g = 255;
$zahl_b = 255;
$ln_zaehler = 5;
}
if($ln_zaehler == 3){
$zahl_r = 155;
$zahl_g = 255;
$zahl_b = 150;
$ln_zaehler = 4;
}
if($ln_zaehler == 2){
$zahl_r = 255;
$zahl_g = 150;
$zahl_b = 150;
$ln_zaehler = 3;
}
if($ln_zaehler == 1){
$zahl_r = 255;
$zahl_g = 255;
$zahl_b = 150;
$ln_zaehler = 2;
}
$text = preg_replace('/([^öäüß\w\d][^"&ref="]{1,})(' . preg_quote($result, '/') . ')([^öäüß\w\d])'.$suchopt.'/i', //suchmuster --> letzter * = ähnliche Suche
'\1<span style="background-color:rgb('.$zahl_r.', '.$zahl_g.', '.$zahl_b.')"><b>\2</b></span>\3', //ersatz
$text); //zeichenkette
# [^"&ref="]{1,} --> Syntaxhighlighting nicht innerhalb des Links, der zu bibleserver verweist &ref=1.Mose3,5 --> &ref=<span style ...>1Mose..
}
return $text;
}
?>