Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727

    non considerare parole di una e due lettere con eccezione...

    ho un semplice codice php che agisce da motore di ricerca dentro un db. Una delle righe è questa:

    if ($length <= 2)
    {
    echo "ATTENZIONE: non vengono considerate le parole di una e due lettere
    ";
    $do = false;
    }

    ossia se l'utente scrive delle parole di una o due lettere il sistema non le considera. Io però adesso avrei l'esigenza di inserire delle eccezioni a questa regola, ad esempio se scrivono la parola RE il motore deve cercarla! pensavo ad una cosa del tipo:

    if ($length <= 2, != re)

    se la lunghezza è minore di 2 ma è diversa da RE ecc ecc
    ma non so come impostarla correttamente perchè sono un pò un cavernicolo del php...

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    io farei così

    Codice PHP:
    <?php
    $paroleok 
    = array("re");
    $length=count($stringa);
    if (!(
    $length>|| in_array($stringa$paroleok))) {
        echo 
    "ATTENZIONE: [i]non vengono considerate le parole di una e due lettere[/i]
    "
    ;
    $do false;
    }
    ?>
    in questo modo se in futuro vorrai aggiungere un nuova parola con 2 caratteri basterà aggiungerla al vettore (es parola ma cambi il vettore con $paroleok = array("re", "ma"); )

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    grazie stefano per la veloce risposta
    dovremmo essere sulla strada giusta, adesso l'ho provato e il motore con quella aggiunta non trova più nulla... nè re nè le altre parole normali
    adesso mangio :-) e poi lo controllo con calma
    a dopo e grazie ancora!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    niente, sono una vera pippa nel php, non sono riuscito a trovare l'errore ma siamo molto vicini alla soluzione, riassumendo, se metto queste righe-->

    if ($length <= 2)
    {
    $do = false;
    }

    il motore funziona bene ed esclude dalla ricerca le parole + piccole di 2 lettere
    Se metto invece queste righe-->

    $paroleok = array("re", "up");
    if (!($length <= 2 || in_array($parola, $paroleok))) {
    $do = false;
    }

    il motore non trova più nulla di nulla
    Se metto invece queste righe-->

    $paroleok = array("re", "up");
    if (!($length <= 2 || in_array($parola, $paroleok))) {
    $do = true;
    }

    trova di tutto e non mi fa più la selezione alle parole + piccole di 2 lettere. Il problema è quindi qui:

    if (!($length <= 2 || in_array($parola, $paroleok)))

    riga di codice che non fa più la selezione bene...

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    leggi meglio quello che ti avevo postato io

    $length>2

    non

    $length<=2

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    cacchio hai ragione, scusa adesso va da dio
    MA ti chiedo se è ancora possibile ottimizzare una cosa: adesso se scrivo re la parola viene cercata ma mi becca ad esempio anche la parola rete perchè contiene re
    Lo so che nella where che c'è più sotto ho messo:

    LIKE '%$parola%'

    e quei simboli % ne sono la causa ma chiedo: come abbiamo inventato un'eccezione per le parole di due lettere, riusciamo ad inventare un eccezione che dica:

    le parole presenti qui--> $paroleok = array("re", "up");

    vanno cercate senza % davanti e dietro......???

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    così dovrebbe funzionare
    Codice PHP:
    if($length==2)
    {
    LIKE '% $parola %'//aggiunto due spazi fra % e parola
    }
    else
    {
    LIKE '%$parola%';


  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    ahhh mi sono di nuovo incasinato perchè evidentemente non metto quelle righe al posto giusto
    ma non ti preoccupare, era solo una finezza

    grazie ancora x l'aiuto
    ciao

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 © 2026 vBulletin Solutions, Inc. All rights reserved.