Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    281

    espressione regolare problema

    Quello che devo fare e' la seguente cosa.
    Ho un db con una tabella che contiene il campo "Regione"
    Poniamoci nel caso : Emilia Romagna

    C'e' un form di ricerca semplice, in cui l'utente puo' inserire delle stringhe di ricerca.

    Es. l'utente inserisce Emilia
    la mia query sul db (mysql) deve restituire i record relativi alla regione Emilia Romagna

    Es. l'utente inserisce Romagna
    la mia query sul db (mysql) deve restituire i record relativi alla regione Emilia Romagna

    Es. l'utente inserisce roma
    la mia query sul db (mysql) non deve restituire i record

    Come si scrive la reg exp ?

    io ho usato questa: ... `Regione` RLike '[^a-z]?stringautente[^a-z]?'

    funziona se
    stringautente = romagna
    oppure
    stringautente = emilia
    ma
    se stringautente = roma
    ottengo risultati

  2. #2
    forse ho capito male la domanda ma se da mysql la query sarà:

    codice:
    select * from tabella where regioni like '%$stringautente%'
    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    281
    se stringautente vale roma la tua query estrae la sottostringa Romagna

    io devo estrarre solo se l'utente digita le stringhe
    'Emilia Romagna'
    'Emilia'
    'Romagna'
    se scrive 'roma' non deve uscire niente

  4. #4
    em scusa questo aspetto mi era sfuggito

    osservazione: se la colonna dove fai la ricerca contiene solo nomi di regione non dovrebbe esserci la stringa "roma"...

    ad ogni modo puoi aggiungere uno spazio prima e dopo:

    codice:
    select * from tabella where regioni like '% $stringautente %'
    ma potrebbe non funzionare se scrivi romagna e sul DB non ci sono spazi prima della stringa

    nel caso prova in php con preg_match (codice di esempio da affinare un po)
    codice:
    $sql = "select regioni from tabella";
    $result = mysql_query($sql);
    while($row = mysql_fetch_array($result)) {
    if (preg_match("/$stringautente/i", $row[regioni])){
    //trovato
    }
    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    281
    like '% $stringautente %'

    non funziona perche' non troverebbe 'Emilia'
    che non ha spazi prima di E

    la reg exp la devo usare nella query con l'operatore RLIKE

    mi spieghi la regexp che hai scritto:

    /$stringautente/i

    Grazie,

  6. #6
    la i sta per case-insensitive

    in pratica verifichi che il primo parametro sia contenuto nel secondo
    in alternatica puoi utilizzare anche strstr()
    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    281
    no.
    penso che la soluzione sia una regexp

    `Regione` RLike '[^a-z]?stringautente[^a-z]?'


    devo correggere questa in modo che non mi consideri le sottostringhe di stringautente

    una cosa del tipo cerca "la parola"

  8. #8
    hai ragione in effetti non è molto funzionale

    ci riprovo ;-)

    codice:
    $sql = "select regioni from tabella";
    $result = mysql_query($sql);
    while($row = mysql_fetch_array($result)) {
      $arr_parole = split(' ', $row[regioni]);
      if (in_array($stringautente, $arr_parole))
        //trovato
    }
    cosi dovrebbe andare

    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    281
    ti ringrazio ma prima di adottare la tua soluzione cerco di risolvere con le reg exp se qualcuno mi aiuta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.