preg_match_all Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • markusschmitt
    replied
    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

    Leave a comment:


  • Coragon Rivito
    replied
    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*

    Leave a comment:


  • markusschmitt
    replied
    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

    Leave a comment:


  • Coragon Rivito
    replied
    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 ..
    Last edited by Coragon Rivito; 04-03-2004, 10:45.

    Leave a comment:


  • markusschmitt
    replied
    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

    Leave a comment:


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

    Leave a comment:


  • markusschmitt
    replied
    Supi, Danke

    MfG Markus
    Last edited by markusschmitt; 04-03-2004, 10:32.

    Leave a comment:


  • Coragon Rivito
    replied
    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 ..
    Last edited by Coragon Rivito; 04-03-2004, 10:44.

    Leave a comment:


  • markusschmitt
    replied
    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
    Last edited by markusschmitt; 04-03-2004, 10:14.

    Leave a comment:


  • derHund
    replied
    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/

    Leave a comment:


  • markusschmitt
    started a topic 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
Working...
X