Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    completare la regexp per motore ricerca interno

    ciao,

    sto costruendo un semplice motore di ricerca interno e dovrei perfezionare la regexp per consentire l'utilizzo di alcuni caratteri per la ricerca
    questa è quella che sto utilizzando attualmente:


    codice:
    if (preg_match("/^[0-9a-zA-Z\-\.àèìòùÀÈÌÒÙ& \'\"]+$/", $searchStr))
    a me servirebbe che fossero consentiti anche questi caratteri:

    "/" - " ' " cioè lo slash e l'apostrofo ( o apice insomma)

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    se i contenuti che devi cercare sono all'interno del db una semplice query con un like è decisamente più performante o.o

  3. #3
    like....

    codice:
    $sql = "SELECT *, MATCH(note, nome_servizio, sottotitolo) 
              AGAINST('$dati' IN BOOLEAN MODE) AS attinenza 
              FROM tbl_servizi WHERE MATCH(note, nome_servizio, sottotitolo) 
             AGAINST('$dati' IN BOOLEAN MODE) ORDER BY attinenza DESC";

    questa è la query


    però prima di eseguirla devo filtrare i caratteri con la regexp e devo aggiungere quelli che ho detto prima, altrimenti non è completa...

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    non ti viene più semplice fare:

    codice:
    $query = "SELECT * FROM tabella WHERE campo LIKE '%{$stringa_ricerca}%' ";
    ? o.o

  5. #5
    ma scusa, la mia è una ricerca full text su più campi..
    la query va bene.

    il problema è sulla regexp......

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    anche il like lo puoi fare su più campi o.o

    non sto facendo il discorso perchè voglio insegnare qualcosa, sto più che altro cercando di capire, visto che non ho mai usato i match, che vantaggi hai rispetto all'utilizzo di un like, visto che la tua espressione regolare sostanzialmente non filtri via quasi nulla <.<


    ad ogni modo per aggiungere gli altri due valori all'espressione regolare devi mettere prima il carattere di escape ovvero:

    \'\/

    e hai risolto

  7. #7
    per i vantaggi di usare MATCH/AGAINST e BOOLEAN MODE anzichè LIKE è spiegato in questa guida http://www.codicefacile.it/tutorials...text/category/

    per quanto riguarda la regexp ho fatto la modifica come mi hai detto:

    codice:
    if (preg_match("/^[0-9a-zA-Z\-\.àèìòùÀÈÌÒÙ& \'\/"]+$/", $searchStr))
    ma mi da errore Parse error: syntax error, unexpected ']'

    scusa ma io di regexp purtroppo so ben poco...

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    codice:
    if (preg_match("/^[0-9a-zA-Z\-\.àèìòùÀÈÌÒÙ& '\/"]+$/", $searchStr))
    è un problema di escape di php
    ti conviene mettere l'espressione regolare dentro apici o un heredoc, perchè quello che lo sta facendo impazzire è il doppio apice prima della parentesi quadra chiusa che per php sta chiudendo la stringa, da qui l'errore

    io ti consiglio di fare così:

    Codice PHP:
    <?php
    $regex 
    = <<<REGEX
    /^[0-9a-zA-Z\-\.àèìòùÀÈÌÒÙ& \'\/"]+$/
    REGEX;

    if (
    preg_match($regex$searchStr))
    ?>

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    per qualche motivo mi ha cambiato l'espressione regolare dopo che l'ho postata <.<

    comunque quella corretta è la seguente:

    /^[0-9a-zA-Z\-\.àèìòùÀÈÌÒÙ& \'\/"]+$/

    [il forum continua a togliermi l'escape prima dell'apice, ma ricordati che c'è]

    io per testarle uso questo sitino:
    http://www.switchplane.com/utilities...hp?pattern=%2F^%2B*{5%2C}%24%2F&subject=2asdf!

  10. #10
    ti posto l'immagine così evitiamo che il forum perda pezzi



    mi da sempre lo stesso Parse error: syntax error, unexpected ']' linea 64

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.