- Home
- Categorie
- Coding e Sistemistica
- PHP
- Togliere gli spazi bianchi intermedi: è possibile?
-
@CZero said:
Non mi ricordo e non posso provare ora, ma credo che puoi risolvere facendo:
$testo_pulito = implode(" ", explode(" ",$testo_da_pulire));
Ciao e grazie per la risposta,
No... purtroppo non va
il valore del campo lo ripulisco in questo modo prima del confronto:
$nome = ltrim(rtrim(strip_tags($_POST['nome'])));
dietro tuo consiglio ho poi messo
$nome_pulito = implode(" ", explode(" ",$nome));
ma il risultato non cambia.... gli spazi bianchi intermedi restituiscono sempre valori diversi e non confrontabili
Qualcuno si è trovato in questa situazione e sa come fare?
-
@Redart said:
Ciao e grazie per la risposta,
No... purtroppo non va
il valore del campo lo ripulisco in questo modo prima del confronto:
$nome = ltrim(rtrim(strip_tags($_POST['nome'])));
dietro tuo consiglio ho poi messo
$nome_pulito = implode(" ", explode(" ",$nome));
ma il risultato non cambia.... gli spazi bianchi intermedi restituiscono sempre valori diversi e non confrontabili
Qualcuno si è trovato in questa situazione e sa come fare?
Puoi risolvere con le espressioni regolari.
$testo_parsato = preg_replace("\040{2,}", "\040", $testo_da_parsare);
Dovrebbe andare, non ho testato niente
-
io ho fatto così:
$testo=str_replace(' ',' ',$testo_da_parserare);
-
@piccolosocrate said:
io ho fatto così:
$testo=str_replace(' ',' ',$testo_da_parserare);
Questo non va perchè tu a priori non sai quanti spazi bianchi ci sono...
-
Ciao,
e grazie per l'interessamento a quelli che hanno postato (PaTeR, CZero, piccolosocrate)
purtroppo i suggerimenti non hanno dato frutti
[LEFT]quello di piccolosocrate funziona benissimo
ma serve a sostituire solo il doppio spazio con uno solo[/LEFT][LEFT]non sò se c'è un modo per rendere la funzione più generale
[LEFT]per spazi >= a 2[/LEFT][LEFT]ho provato a modificarla con[/LEFT]
[LEFT]str_replace('\040{2,}','\040',$testo_da_parsare);[/LEFT]
ma nulla di nulla, non funziona
che dite, si può modificare???
[/LEFT]
il codice complicatissimo di PaTeR in teoria dovrebbe andare ma
anche questo non funzionase ho capito bene la funzione** preg_replace**
esegue una ricerca ed una sostituzione con le espressioni regolaripreg_replace (espressione_regolare, sostituto, testo)
La funzione ricerca in testo i criteri impostati in espressione_regolare.
e li sostituisce con sostituto.\040
è modo per indicare uno spazio{2,}
dovrebbe significare
che quanto scritto prima si ripete da 2 volte ad infinitoquindi, il tutto dovrebbe significare cerca all'interno di $testo_da_parsare gli spazi bianchi ripetuti 2 o più volte e sostituiscili con 1 solo spazio bianco
purtoppo non va
ho fatto dei tentativi e ho provato anche a sostituire \040 con \40
in quanto avevo letto che sono equivalenti.... ma nulla è cambiatoho provato anche a sostituire i doppi apici " " con quelli singoli ' '
dopo aver visto il suggerimento di piccolosocrate,
ma mi rida l'errorequalcun'altro ha suggerimenti?
Un saluto
-
Scusa, come al solito ho dimenticato i delimitatori... Li dimentico sempre
modifica così il codice:
$b = preg_replace('#\040{2,}#', '\040', $a);
$a è il tuo testo. $b è il testo risultante.
-
@PaTeR said:
Scusa, come al solito ho dimenticato i delimitatori... Li dimentico sempre
modifica così il codice:
$b = preg_replace('#\040{2,}#', '\040', $a);
$a è il tuo testo. $b è il testo risultante.
Niente scuse PaTeR.........
solo grazie per la disponibilitàmi spiace deluderti ma purtroppo non và
sono stato attento a copiarlo per bene ma proprio non funziona$nome_pulito = preg_replace('#\040{2,}#', '\040', $nome);
la soluzione è più ardua di quanto pensassi
Ciao
-
@Redart said:
Niente scuse PaTeR.........
solo grazie per la disponibilitàmi spiace deluderti ma purtroppo non và
sono stato attento a copiarlo per bene ma proprio non funziona$nome_pulito = preg_replace('#\040{2,}#', '\040', $nome);
la soluzione è più ardua di quanto pensassi
Ciao
A me funziona... guarda qui ( ho levato il secondo \040 per mettere uno spazio) :
http://phoenixdivision.byethost16.com/aaa.phpNaturalmente non si nota niente dal browser, devi vedere il sorgente della pagina.
-
allora senza impelagarti in script atroci con tre righe risolvi il problema....
$testo=str_replace(' ',' ',$testo_da_parserare);
$testo=str_replace(' ',' ',$testo);
$testo=str_replace(' ',' ',$testo);
-
@piccolosocrate said:
allora senza impelagarti in script atroci con tre righe risolvi il problema....
$testo=str_replace(' ',' ',$testo_da_parserare);
$testo=str_replace(' ',' ',$testo);
$testo=str_replace(' ',' ',$testo);
Non è script atroce quello che ho fatto... è script funzionante. Questo è un pò di codice in extremis, ma se funziona... tanto bene per lui...
-
$testo=str_replace(' ',' ',$testo_da_parserare);
$testo=str_replace(' ',' ',$testo);
$testo=str_replace(' ',' ',$testo);Dai. E' osceno. E se gli spazi sono 8?
Quoto pater ed aggiungo che potresti crearti una funziona apposta e passargli i valori.
Una cosa del tipo:
function rimuovispazi($testo,$trim=true) {
$testo=preg_replace("#\s{2,}#", " ", $testo);
return $testo=($trim)?trim($testo):$testo;
}che chiamerai con:
$text=rimuovispazi($vecchiotesto); se vuoi anche togliere gli spazi ad inizio e fine riga o
$text=rimuovispazi($vecchiotesto,false); se non vuoi
-
Ciao,
ho risolto con il codice di PaTeR (grazie
$nome_pulito = preg_replace('#\040{2,}#', ' ', $nome);
è bastato cancellare il secondo \040 ed inserire uno spazio vuoto è tutto ha funzionato
grazie mille
Buona giornata