Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    70

    Funzione Split, da spazi ad underscore

    Ciao ragazzi ho questo problema da risolvere..
    Ho in ingresso una stringa con parole separate da spazi, e mi servirebbe una stringa in uscita con le stesse parole divise da underscore e non piu spazi..

    Mi date una mano?

    Pensavo di utilizzare la funzione split:

    codice:
    $ciccio = split("[ ]+", "Ciao mamma oggi è una giornata bellissima");
    foreach ($ciccio as $singole){
    		$frase_con_underscore_per_keywords = $singole.'_';
    }
    Ma facendo un questo modo mi scrive solo l'ultima parola..qualche suggerimento?

    Grazie a tutti!!!

  2. #2
    invece che usare split, prova ad usare explode

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Se devi sostituire ogni spazio con un underscore basta un banale str_replace

    Se invece devi ridurre un numero indefinito di spazi a un solo underscore

    codice:
    echo preg_replace('#[ ]+#','_',$ciccio);

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    70
    Ciao ho provato a fare questo ma continua a restituirmi "array"..

    codice:
    $wordChunks = explode(" ", $_POST['products_name']);
    		for($i = 0; $i < count($wordChunks); $i++){
    			if($i == 0){
    				$temp_keywords = $wordChunks[$i];
    			}else{
    				$temp_keywords = $temp_keywords.'_'.$wordChunks[$i];
    			}
    		}
    		for($i = 0; $i < count($wordChunks); $i++){
    			if($i == 0){
    				$temp_tags = $wordChunks[$i];
    			}else{
    				$temp_tags = $temp_tags.','.$wordChunks[$i];
    			}
    		}
    
    		$nome_con_underscore_per_keywords = implode(",", $temp_keywords);
    		$nome_con_virgola_per_tags = implode(",", $temp_tags);
    $_POST['products_name'] => passo una stinga tipo "Ciao mamma guarda come mi diverto"
    $nome_con_underscore_per_keywords e $nome_con_virgola_per_tags sono delle variabili che salvo sul DB e dovrebbero esser composte in questo modo:

    $nome_con_underscore_per_keywords = Ciao_mamma_guarda_come_mi_diverto
    $nome_con_virgola_per_tags = Ciao,mamma,guarda,come,mi,diverto

    Prima faccio "esplodere" l'array passato dalla form salvandolo in un modo (_) o nell'altro (,) e poi i due risultati li faccio implodere dentro alle variabili che passo alla query..

    Ma perchè non va?che sbaglio?

  5. #5
    Codice PHP:
    $wordChunks explode(" "$_POST['products_name']);
    $nome_con_underscore_per_keywords implode("_"$wordChunks);
    $nome_con_virgola_per_tags implode(","$wordChunks); 
    se le unisci a mano non ha più senso usare l'implode!

    comunque come già consigliato conviene usare str_replace (o preg_replace nel caso di spazi multipli).

    ps lavori con la segnalazione degli errori attiva?
    PHP Warning: implode(): Invalid arguments passed on line 21

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    70
    Ciao si certo, infatti mettendo il tuo codice mi salva sul DB ancora "Array" e "Array" nei rispettivi campi passando i dati alla query e mi genera il seguente errore:

    PHP Notice: Array to string conversion in..
    Come dovrei usare quelle istruzioni di cui parli?Ho cercato un po sul manuale PHP online ma non ci go capito moltissimo..

    Grazie..

  7. #7
    print_r($_POST['products_name']); cosa restituisce?

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.