PHP: Suchfeldeingabe - Suchbegriffe richtig splitten

Diskutiere PHP: Suchfeldeingabe - Suchbegriffe richtig splitten im Web & Grafik Forum im Bereich Internet & Telekomunikation Forum; Hallo, ich möchte eine Suchfunktion bauen, dessen eingegebene Suchbegriffe individuell behandelt werden können. Es sollen die Suchwörter...
  • PHP: Suchfeldeingabe - Suchbegriffe richtig splitten Beitrag #1
DanielxK48x

DanielxK48x

Bekanntes Mitglied
Dabei seit
02.06.2000
Beiträge
1.376
Reaktionspunkte
1
Ort
das weis keiner...
Hallo,

ich möchte eine Suchfunktion bauen, dessen eingegebene Suchbegriffe individuell behandelt werden können.

Es sollen die Suchwörter einzeln in ein Array geschrieben werden.
Das ist ja mit explode() kein Problem, solange man keine Bedingungen daran knüpft.

Also alle Suchbegriffe trenne ich anhand des Leerzeichens zb. mit: explode(' ', $input);
Somit würde bei der Eingabe Hallo Welt das Wort Hallo in $input[0] stehen und Welt in $input[1].

Ich möchte aber nun Wörter, die von " eingeschlossen sind nicht mit dem Leerzeichen aufsplitten.
Also "Hallo Welt" müsste dann komplett als Hallo Welt in $input[0] stehen.

Noch komplizierter wären dann Eingaben wie: Hallo "Herr August" was macht "Haus & Hund"
Bei dieser Eingabe müsste das Array dann so aussehen:

$input[0] = Hallo
$input[1] = Herr August
$input[2] = was
$input[3] = macht
$input[4] = Haus & Hund

Die Theorie, wie ich das machen könnte, ist mir schon klar, aber nicht die Umsetzung ohne komplizierte verschachtelte Schleifen zu bauen.
Hat jemand einen guten und schnellen Lösungsansatz?
 
Zuletzt bearbeitet:
  • PHP: Suchfeldeingabe - Suchbegriffe richtig splitten Beitrag #2
S

Stefan

Guest
Hallo DanielxK48x,

da gibts viele Wege, ich bin mir selbst unschlüssig, ob meiner der schnellste Weg ist:
PHP:
	$string = 'Hallo "Herr August" was macht "Haus & Hund"';
	$matches = array();

	preg_match_all('/"([^"]+)"|([^" ]+)/', $string, $matches);

	foreach($matches[1] as $key => $value)
	{
		$input[] = $matches[1][$key] . $matches[2][$key];
	}

	unset($string, $matches);

	echo '<pre>' . print_r($input, true) . '</pre>';
Ausgabe ist:
Code:
Array
(
    [0] => Hallo
    [1] => Herr August
    [2] => was
    [3] => macht
    [4] => Haus & Hund
)
Also genau so wie gewünscht.
Man könnte auch bei $matches[0] die Anführungszeichen rausnehmen, dann hat man das gleiche Ergebnis.

Viele Grüße

Stefan
 
  • PHP: Suchfeldeingabe - Suchbegriffe richtig splitten Beitrag #3
DanielxK48x

DanielxK48x

Bekanntes Mitglied
Dabei seit
02.06.2000
Beiträge
1.376
Reaktionspunkte
1
Ort
das weis keiner...
Du bist spitze! :)
Danke ... das klappt super!
Mit den reg. Ausdrücken tu ich mich leider noch schwer. :/
 
  • PHP: Suchfeldeingabe - Suchbegriffe richtig splitten Beitrag #4
DanielxK48x

DanielxK48x

Bekanntes Mitglied
Dabei seit
02.06.2000
Beiträge
1.376
Reaktionspunkte
1
Ort
das weis keiner...
Ich habe die Sache versucht noch auf Sonderzeichen auszuweiten und bin leider gescheitert.
So würde ich gerne, dass die Zeichen + - & auch als extra Wort behandelt werden und in ein extra Feld kommen.

Also wenn ich den Beispielsuchsatz noch ungefähr so verschärfen würde: Hallo & "Herr August" was -macht + "Haus & Hund"

dann sollten im Array letztenendes das stehen:

$input[0] = Hallo
$input[1] = &
$input[2] = Herr August
$input[3] = was
$input[4] = -
$input[5] = macht
$input[6] = +
$input[7] = Haus & Hund

Wichtig ist, dass natürlich alles zwischen "" weiterhin nicht getrennt wird.
Ist es sehr aufwendig für dich das nochmal umzustellen? :)
 
  • PHP: Suchfeldeingabe - Suchbegriffe richtig splitten Beitrag #5
DanielxK48x

DanielxK48x

Bekanntes Mitglied
Dabei seit
02.06.2000
Beiträge
1.376
Reaktionspunkte
1
Ort
das weis keiner...
Ich habe das jetzt so gelöst:

PHP:
$a = array(" -", " &", " +");
$b = array(" - ", " & ", " + ");
$string = str_replace($a, $b, $string);
preg_match_all('/"([^"]+)"|([^" ]+)/', $string, $matches);

Wenn es eine bessere Lösung gibt bitte ich dies kund zu tun. :)
 
Thema:

PHP: Suchfeldeingabe - Suchbegriffe richtig splitten

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.173
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben