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

    controllo caratteri speciali

    Ciao ragazzi mi sto perdendo in una cavolata ma non riesco a risolverla...

    Di seguito vi posto il codice che sto usando, quest'ultimo dovrebbe cercare nella variabile titolo i caratteri che sono definiti nell'array "caratteri" e se esistono sostituirli con uno spazio... solo che non funziona benissimo, mi modifica solo se trova il primo indice dell'array e sempre con il primo indice mi taglia la frase quindi se ho Festival d'autunno ritorna festival d

    Come posso fare? grazie a tutti
    codice:
    while($row=mysql_fetch_array($result)){
    	$titolo = $row['titolo'];
    	$caratteri = array("'","_","-");
    	$max = count($caratteri);
    		for($i=0; $i<$max; $i++){
    			$dw_titolo = str_replace($caratteri[$i]," ",$titolo);
    					
    		}
    		/*$dw_titolo = str_replace("'", " ",$titolo);*/
    		echo"<option value='".$dw_titolo."'>".$titolo."</option>";
    }

  2. #2
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Eppure il codice mi sembra giusto. Hai provato a fare un var_dump($dw_titolo); ?
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  3. #3
    basta un
    Codice PHP:
    while($row=mysql_fetch_array($result)){
        
    $titolo $row['titolo'];
        
    $caratteri = array("'","_","-");
            
    $dw_titolo str_replace($caratteri" "$titolo);
            echo
    "<option value='".$dw_titolo."'>".$titolo."</option>";

    senza fare il ciclo.

  4. #4
    Grazie mille ...

    Comunque non serve il ciclo perchè è già dentro a un while?... giusto per capire

  5. #5
    il primo (e il secondo) parametro di str_replace può un array:

    Codice PHP:
    <?php
    $parole_vietate 
    = array('stringa''essere''parole'); // stringhe da rimuovere

    $stringa 'questa è una stringa da cui devono essere rimosse delle parole';

    $new_stringa str_replace($parole_vietate''$stringa);
    // se hai una versione recente di php puoi usare str_ireplace 
    // che non distingue tra maiuscole e minuscole (non case sensitive)
    ?>
    Pertanto quel ciclo di for che fai per sostituire lo ritengo errato... o quantomeno errato...

    inoltre count ti restituisce il numero di elementi:
    Codice PHP:
    $caratteri = array("'","_","-");
    $max count($caratteri); 
    nel tuo caso pari a 3... ma le chiavi non partono da 1 e arrivono a 3!!!
    esse partono da 0 e arrivano a due!!!!

    pertanto l'ultimo ciclo di for che esegui in cui
    Codice PHP:
    $dw_titolo str_replace($caratteri[3]," ",$titolo); 
    risulta essere errato dato che $caratteri[3] non esiste!!!

    spero di esserti stato chiaro e di aiuto!

    ciao

  6. #6
    no, perché str_replace() di suo già cicla tutta la stringa che gli passi. insomma agisce su stringhe e non su singoli caratteri.

  7. #7
    Utente di HTML.it L'avatar di Andy_87
    Registrato dal
    Jun 2010
    Messaggi
    323
    Ha ragione Bionicoz..no, il ciclo non serve perchè la funzione str_replace() è una sorta di ciclio, cioè controlla tutti i caratteri della stringa che gli passi.
    "Se non riuscirò a piegare gli dei del cielo, smuoverò le potenze dell'inferno"
    S. Freud

  8. #8
    grazie ad entrambi come sempre... un'ultima cosa se io volessi sostituire il carattere ' con il &acute; è possibile?

    e anche altri caratteri con la stessa procedura

  9. #9
    se i caratteri da sostituire iniziano a diventare tanti ti cosiglio di crearti due array uno coi carattery da sostituire, e un altro array con le sostituzioni per ogni singolo carattere e poi usare str_replace usando gli array, così:

    Codice PHP:
    while($row=mysql_fetch_array($result)){ 
        
    $titolo $row['titolo']; 
        
        
    $bad = array("'","_","-","è","é","ë"); /*ecc*/ 
        
    $good = array("`"," "," ","e","e","e");  /*ecc di conseguenza*/

        
        
    $dw_titolo str_replace($bad$good$titolo); 
        echo
    "<option value='".$dw_titolo."'>".$titolo."</option>"

    bb, bio.

  10. #10
    E se utilizzo l'array con gli indici?
    $caratteri = array("dw_char" => "-", "cambio" =>"&..");

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.