Suche mit Wortgruppen
user76
- php
Hallo,
ich habe ein Suchscript, in dem ich mit explode() die Suchbegriffe jeweils nach einem Leerzeichen in ein Array süberführe.
Nun suche nach einer möglichst einfachen Möglichkeit, Wortgruppen, die mit Anführungszeichen umschlossen sind, auch als solche ins Array zu übernehmen.
Beispiel:
Sucheingabe: "test suche" suchen
Das erzeugt momentan folgendes Array:
[0]=>"test
[1]=>suche"
[2]=>suchen
stattdessen soll es aber so aussehen:
[0]=>test suche
[1]=>suchen
Danke für Hilfestellungen
Hallo user76,
Beispiel:
Sucheingabe: "test suche" suchen
Das erzeugt momentan folgendes Array:
[0]=>"test
[1]=>suche"
[2]=>suchen
stattdessen soll es aber so aussehen:
[0]=>test suche
[1]=>suchen
Vielleicht zuerst explode() mit " als Trenner und dann die Teile ggf. weiter zerlegen?
Dafür kann man natürlich erstmal prüfen, ob 2 " im Suchstring vorkommen, und sich ansonsten das Zerteilen an " sparen.
Das sollte doch eigentlich problemlos klappen ...
MfG
Götz
Huhu,
eine einfache Möglichkeit ist es den Suchstring zeichenweise zu durchlaufen , dabei auf Leerzeichen und " zu prüfen und entsprechend zu reagieren.
In einer primitiven Variante schaut das ungefähr so aus:
<?php
$s = 'Esel Hund "gestiefelter Kater" Hahn';
$n = strlen($s);
$count = 0;
$stack = array();
$mode = 1;
for ($i=0; $i < $n; $i++):
$char = $s[$i];
if ($char == '"'){
$mode = 1 - $mode;
continue;
}
if ($char == ' ' && $mode == 1){
$count++;
continue;
}
if (!isset($stack[$count])){
$stack[$count] = '';
}
$stack[$count] .= $char;
endfor;
var_dump($stack);
?>
Viele Grüße
lulu
hier wird dir nichts anderes helfen, als mit regulären ausdrücken zu arbeiten.