user76: Suche mit Wortgruppen

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

  1. 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

    --
    Losung für Samstag, 5. November 2005
    Wenn du nun gegessen hast und satt bist und schöne Häuser erbaust und darin wohnst, dann hüte dich, dass dein Herz sich nicht überhebt und du den Herrn, deinen Gott, vergisst. (5. Mose 8,12.14)
    Trachtet nach dem, was droben ist, nicht nach dem, was auf Erden ist. (Kolosser 3,2)
    (Losungslink)
  2. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
  3. hier wird dir nichts anderes helfen, als mit regulären ausdrücken zu arbeiten.