preg_match_all Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • markusschmitt
    antwortet
    Naja mit einem Suchsting wie
    "Adobe and *otoshop or *reader" kann man ohne alle Teile zu zerstückeln nicht suchen. Aus dem Ding soll praktisch später ein SQL String werden.

    Noch eine Frage, gibt es eine Möglichkeit, dass auch Or,oR,nOT... auch erkannt werden, ohne dass man alle möglichkeiten angibt? Groß und Klein Schreibung soll also nicht beachtet werden?

    MfG Markus

    Einen Kommentar schreiben:


  • Coragon Rivito
    antwortet
    is mir klar .. nur warum du die wörter einzeln brauchst, versteh ich ned ganz ..

    und lass mich (stefan) endlich aus dem spiel ^^ immer wird nach mir gesucht *fg*

    Einen Kommentar schreiben:


  • markusschmitt
    antwortet
    Super, Danke, hat mir sehr geholfen.

    Gebraucht wird das Ergebnis um einen SQL String für eine Suche aufzubauen.
    Das ? heißt, ein buchstabe weiß ich nicht. Der * heißt mehrere Buchstaben weiß ich nicht. Ste?an sucht also Stefan und Ste*an gibt Stefan und Stephan zurück.

    MfG Markus

    Einen Kommentar schreiben:


  • Coragon Rivito
    antwortet
    hab oben jetzt doppelt escaped .. sprich es stimmt nun ..
    das ampersand ( & ) zu escapen is unnötig ..
    ergo funktioniert obiges mit copy&paste ..

    var_export is wie print_r .. es wird bloß echter php code erzeugt, den man theoretisch weiterverwenden könnte ..
    verwandt is auch var_dump .. allerdings bekommst da die stringlänge und den typ .. alles unnützes zeug

    da alles in $arr[0] steckt hab ich auch nur das ausgeben lassen ..
    Zuletzt geändert von Coragon Rivito; 04.03.2004, 10:45.

    Einen Kommentar schreiben:


  • markusschmitt
    antwortet
    Doch noch eine Bitte, könntest du den RegeEx noch ohne [ php] Tags poste, da verschwinden die \.

    was macht denn var_export? //php.net ist down

    hab festgestellt print_r und var_export zeigen unterschiedliches an. Wie sieht der Inhalt denn nun genau aus?

    MfG markus

    Einen Kommentar schreiben:


  • Coragon Rivito
    antwortet
    darf man fragen wozu du das brauchst ?

    Einen Kommentar schreiben:


  • markusschmitt
    antwortet
    Supi, Danke

    MfG Markus
    Zuletzt geändert von markusschmitt; 04.03.2004, 10:32.

    Einen Kommentar schreiben:


  • Coragon Rivito
    antwortet
    warum nicht so ?

    das einzige .. er findet und listet auch whitespace ..
    dem war jetzt auf die schnelle nicht beizukommen

    PHP-Code:
    <?php

    $search 
    'hallo frau and mann or haus & klaue eins | muh seufz OR hmm NOT test';

    preg_match_all '{(?:(?:and|AND|or|OR|not|NOT|\\||&)\\s+)?(?:[a-zA-Z0-9\\*\\?]+)}'$search$arr );

    print 
    '<pre>';
    var_export $arr[0] );
    print 
    '</pre>';

    ?>
    ausgabe:
    PHP-Code:
    array (
      
    => 'hallo',
      
    => 'frau',
      
    => 'and mann',
      
    => 'or haus',
      
    => '& klaue',
      
    => 'eins',
      
    => '| muh',
      
    => 'seufz',
      
    => 'OR hmm',
      
    => 'NOT test',

    EDIT:
    leerzeichen fand er wegen der regex für das einzelne wort .. da war ein * dahinter .. durch + ersettz ..
    Zuletzt geändert von Coragon Rivito; 04.03.2004, 10:44.

    Einen Kommentar schreiben:


  • markusschmitt
    antwortet
    Klappt aber immernoch nicht so wie es soll. Habs mit deiner Methode versucht, des hat aber überhaupt nicht geklappt.

    echo $search = "hallo frau and mann or haus & klaue eins";
    preg_match_all("![^ ]+[a-zA-Z0-9]*!",$search, $arr);
    echo "<pre>";
    print_r($arr);
    echo "</pre>";

    Ergebnis:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    0] => hallo
                
    [1] => frau
                
    [2] => and
                [
    3] => mann
                
    [4] => or
                [
    5] => haus
                
    [6] => &
                [
    7] => klaue
                
    [8] => eins
            
    )


    wie bekomme ich jetzt des ausgeschlossen and|AND|or|OR|not|NOT|\||\&
    hin

    MfG Markus
    Zuletzt geändert von markusschmitt; 04.03.2004, 10:14.

    Einen Kommentar schreiben:


  • derHund
    antwortet
    Re: preg_match_all Problem

    Beim 2ten, also ein array für (hallo, frau, eins) bekomm ich nun nach ca. 2 Stunden immernoch nicht gebacken. Könnt ihr mir helfen?
    #
    (?<!xxx)

    Negiert das angegebene Pattern und wirkt sich auf das nachfolgende aus.

    Beispiel: /(?<!text1)text2/

    Trifft auf eine Zeichenkette zu, die "text2" enthält, aber nur, wenn "text1" nicht davor kommt.
    http://www.php-resource.de/tutorials/read/10/1/

    Einen Kommentar schreiben:


  • markusschmitt
    hat ein Thema erstellt preg_match_all Problem.

    preg_match_all Problem

    Tagchen also ich habe einen String: "hallo frau and mann or haus & klaue eins".
    Was ich jetzt brauche sind alle "and Wort", "or Wort", "not Wort".... (also and mann, or haus, & klaue) sowie jedes Wort bei dem kein and, or, not... davorsteht (hallo, frau, eins)
    Erstes hatt ich nach ca. 30 min gelöst.
    echo $search = "hallo frau and mann or haus & klaue eins";
    preg_match_all("!(and|AND|or|OR|not|NOT|\||\&)[ ]+[a-zA-Z0-9] *!",$search, $arr); // die \ vor | und & hätten mir die [p hp] tags gelöscht.
    echo "<pre>";
    print_r($arr);
    echo "</pre>";

    Ergebnis:
    PHP-Code:
    Array
    (
        [
    0] => Array
            (
                [
    0] => and mann
                
    [1] => or haus
                
    [2] => & klaue
            
    )

        [
    1] => Array
            (
                [
    0] => and
                [
    1] => or
                [
    2] => &
            )


    Beim 2ten, also ein array für (hallo, frau, eins) bekomm ich nun nach ca. 2 Stunden immernoch nicht gebacken. Könnt ihr mir helfen?

    MfG Markus
Lädt...
X