";
echo $sql_abfrage.b_parse('\"Geiler Kater\"',$feld);
echo "
";
echo $sql_abfrage.b_parse('Kater NOT geiler',$feld);
echo "
";
/*
Ich hab die Funktion mal erweitert, sodass man als dritten optionalen Parameter
noch den standart Parameter anhängen kann. Der ist in diesem Fall OR.
Damit werden alle Reihen gefunden, in denen mindestens eines der Wörter vorkommt.
Mit AND werden die Reihen gefunden, in denen alle wörter vorkommen.
Mit AND NOT kannst du bestimmte Wörter ausschliessen und mit "" kannst du gezielt nach einem
ganzen String suchen.
*/
function b_parse($str, $field,$default="OR")
{
if($str) {
$quoted = explode("\\\"", $str);
for($i = 0; $i < count($quoted); $i++) {
if($i == 0 && !$quoted[$i]) {
//quote came at beginning of string
$begin = True;
$i++;
}
if($begin) { $words[] = $quoted[$i]; }
else {
$phrase = explode(" ", $quoted[$i]);
for($n = 0; $n < count($phrase); $n++) {
if($phrase[$n]) { $words[] = $phrase[$n]; }
}
}
$begin = !$begin;
}
for($i = 0; $i < count($words); $i++) {
if($words[$i]) {
if(strtolower($words[$i]) == "and" || strtolower($words[$i]) == "or" || strtolower($words[$i]) == "not") {
if(strtolower($words[$i]) == "not") {
$i++;
if($sql_out) { $sql_out .= " AND "; }
$sql_out .= $field . " NOT LIKE '%" . $words[$i] . "%'";
}
else if($i > 0) {
$sql_out .= " " . strtoupper($words[$i]) . " ";
$boolean = True;
}
}
else {
if($sql_out && !$boolean) { $sql_out .= " $default "; }
$sql_out .= $field . " LIKE '%" . $words[$i] . "%'";
$boolean = False;
}
}
}
}
return $sql_out;
}
?>