Separare lettere da numeri in una stringa

Buongiorno a tutti!

Mi permetto di disturbarvi poiché non riesco a venire a capo di un problema che devo risolvere! In pratica data una stringa di input, vorrei poter verificare su ogni parola di questa stringa se vi sono sia lettere che numeri, e in tal caso separarli attraverso uno spazio.

Passo a un esempio concreto: In input ho una cosa del genere "P875", beh allora vorrei trasformarlo in "P 875'. Nel caso in cui in input ho già lettere e spazi separati ("P 875") non deve accadere nulla. Ovviamente questa funzione dovrebbe andar bene anche in casi in cui ci sono piu' parole intermedie, come "casa CT44366", che deve diventare "casa CT 44366". Spero di essermi spiegato bene e che possiate essermi d'aiuto o consigliarmi!

Grazie in anticipo

inviato 5 anni fa
Amido
Cosa deve accadere ad una parola del tipo ABC123ABC123?Gianni Tomasicchio 5 anni fa
a me basterebbe pure si fermasse alla prima alternanza di caratteri lettere!Amido 5 anni fa
ma quale sarebbe il comportamento ottimale?Gianni Tomasicchio 5 anni fa
beh in realtà mi serve per un caso isolato che pero' è ricorrente sul mio sito, ovvero quello che se cerco dei prodotti che in genere sono formati da un carattere fino a 4, più un certo numero di cifre, se non sono interposti dallo spazio per come è strutturata la ricerca non è possibile trovare il prodotto! Dunque mi servirebbe, visto che in generale le sigle sono come quelle descritte in precedenza, giusto separare la stringa a partire dalla prima alternanza lettere/parole !Amido 5 anni fa
X 0 X

Prova così:

<?php
$testo = "Ciao CT123 wow AS432 tat";
echo preg_replace('/([a-zA-Z]+)([0-9]+)/', "$1 $2", $testo);
risposto 5 anni fa
Gianni Tomasicchio
Grazie mille!! Funziona alla perfezione! :)) GentilissimoAmido 5 anni fa
X 0 X X

Hai due possibili strade.

La prima è più semplice, ma anche meno efficiente: fai un ciclo sui caratteri della stringa (in base alla sua lunghezza) e per ogni singolo caratteri verifichi che sia un numero o una stringa e quando individui un cambio (da lettera a numero o viceversa) interrompi il ciclo e inserisci uno spazio. Se incontri uno spazio, interrompi semplicemente.

La seconda è meno semplice: usa un'espressione regolare.

risposto 5 anni fa
Massimiliano Arione
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda