Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441

    Espressione regolare: singola parola

    Come posso creare un'espressione regolare che mi prenda da un input testo solo le prime tre parole inserite nel form e poi immetterle in un array per inserirle così in un database?

    O meglio, come posso prendere solo la prima parola inserita, visto che poi con un ciclo for ripetuto tre volte farò lo stesso per le altre due...

    $key = $_POST['key'];
    $cerca = preg_match_all('/([\w]+)/', $key, $key);
    $key = implode(' ',$key[1]);

    Soluzioni al mio problema?

  2. #2
    Utilizzando la funzione substr.

    Codice PHP:
    $taglio=substr($key03); 
    Dopodiche inserisci $taglio nel database. La funzione substr permette di tagliare un testo. Nel caso di specie, 0 indica il carattere da cui partire (e cioè l'inizio) e 3 invece le prime tre lettere da prendere in considerazione.

  3. #3
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    No, non è quello che cerco, io sto cercando un modo per prendere un certo numero di parole indipendentemente dal numero dei caratteri di queste, mi spiego?

  4. #4
    Certo, ora ho capito.
    Inanzitutto consideri come parola un insieme di lettere unite seguite da uno spazio. Setti quindi un explode che abbia come separatore lo spazio per l'appunto, puntandolo verso la tua variabile key. Dopodichè richiami i primi tre elementi dell'array e li inserisci nel database.
    Codice PHP:
    $cutkey explode(" "$key); 
    $cutkey0=$cutkey[0]; 
    $cutkey1=$cutkey[1];
    $cutkey2=$cutkey[2];
    echo 
    $cutkey0;
    echo 
    $cutkey1;
    echo 
    $cutkey2
    Prova un pò così e dimmi se funziona

  5. #5
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Geniale, non ci avevo pensato! funziona, grazie

  6. #6
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Piccolo errore, se io non immetto nessun testo nell'imput del form mi viene scritto:

    codice:
    Notice: Undefined offset: 1 in C:\Program Files\EasyPHP-5.3.8.0\www\action.php on line 15
    Notice: Undefined offset: 2 in C:\Program Files\EasyPHP-5.3.8.0\www\action.php on line 16
    Cioè questo è un input di tipo secondario, diciamo facoltativo, quindi un utente può scrivere una di parola, uno ne può scrivere due e un altro magari tre di parole, cioè può inserirne anche quattro, ma quest'ultima no verrà contata, ecco: non oltre le tre parole. Tra parentesi, come dicevo prima: anche nessuna!

    Quindi io ho fatto così, però vedo degli errori sulla pagina una volta inviato il form (vedi sopra)

    Codice PHP:
    if (isset($_POST['key'])) {
        
    $key $_POST['key'];
        
    $cut explode(' '$key);  
        
    $cut1 $cut[0];  
        
    $cut2 $cut[1]; 
        
    $cut3 $cut[2];
            
    $key $cut1.' '.$cut2.' '.$cut3;
    }
    mysql_query("INSERT INTO post VALUES (...'$key'...), 
    COME RISOLVO?

  7. #7
    Questo perchè gli elementi 1 e 2 dell'array non sono specificati (nel caso di una sola parola, o di sole due parole)
    Devi rimediare contando gli elementi dell'array, e se esiste un solo elemento non tentare di mostrare gli altri due e così discorrendo.
    Codice PHP:
     if (isset($_POST['key'])) 

    $cut explode(' '$key);  
    $element count($cut);
    if (
    $element==1)
    {
    $cut1 $cut[0];  
    $key="$cut1";
    }
    elseif (
    $element==2)
    {
    $cut1 $cut[0];
    $cut2 $cut[1]; 
    $key="$cut1 $cut2";
    }
    elseif (
    $element==3)
    {
    $cut1 $cut[0];
    $cut2 $cut[1]; 
    $cut3 $cut[2];
    $key="$cut1 $cut2 $cut3";
    }
    if (
    $key=="")
    {
    echo 
    "Inserisci almeno una parola";
    }else{
    //La tua query qui
    }

    Dovrebbe funzionare

  8. #8
    Codice PHP:
    if (isset($_POST['key']))  
    {  
       
    $cut explode(' '$key);   
       
    $element count($cut); 
       
    $cut1 $cut[0];   
       
    $key=$cut1
       if (
    $element==2)
      {
          
    $cut2 $cut[1];  
          
    $key .= ' '.$cut2
       } 
       elseif (
    $element==3
       { 
           
    $cut2 $cut[1];  
           
    $cut3 $cut[2]; 
           
    $key .= ' '.$cut2.' '.$cut3
        } 

    Ho apportato alcune modifiche in quanto, se la variabile $_POST['key'] è settata vuol dire che contiene almeno una parola quindi la prima IF l'ho rimossa.
    L'ultimo controllo sulla variabile $key, messo in quel punto era inutile, in quanto se si entra nell'if iniziale, quella variabile avrà sempre un valore. Sarebbe giusto metterla fuori dall'IF e eseguire la tua query se $key è settata.

    Codice PHP:
    if(isset($key)){
      
    //query
    }else{
      echo 
    "ERRORE! Devi inserire almeno una parola";


  9. #9
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Niente, questo è il mio script: in breve, mi viene stampata sulla pagina, pur non inserendo alcun testo, la lettera q, cioè $elm risulta essere piena di un valore, perchè? In teoria, per come dovrebbero andare le cose, sulla pagina dovrebbe venire stampata la lettera n!

    Codice PHP:
    ins();

    function 
    ins() {
        if (isset(
    $_POST['key'])) {
            
    $key $_POST['key'];
            
    $cut explode(' '$key);   
            
    $elm count($cut); 
            if (
    $elm == 1) { 
                echo 
    'q';
                
    $cut1 $cut[0];   
                
    $key '$cut1'
            } elseif (
    $elm == 2) {
                echo 
    'w';
                
    $cut1 $cut[0]; 
                
    $cut2 $cut[1];  
                
    $key '$cut1 $cut2';
            } elseif (
    $elm == 3) {
                echo 
    'e';
                
    $cut1 $cut[0]; 
                
    $cut2 $cut[1];  
                
    $cut3 $cut[2]; 
                
    $key '$cut1 $cut2 $cut3';
            } else { 
                echo 
    'n'
            }
        }


  10. #10
    scusa, provando mi sono reso conto che il codice seguente anche se logicamente non è perfetto, in realtà funziona:

    Codice PHP:
    if (isset($_POST['key']))   
    {   
       
    $cut explode(' '$key);    
       
    $key=$cut[0]." ".$cut[1]." ".$cut[2];  

    in teoria le variabili $cut[1] e $cut[2] se viene scritta solo una parola non esistono. Ma provando non viene rilevato alcun errore, quindi sembra funzionare correttamente.

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.