Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    133

    espressioni regolari con PHP

    ho provato a leggere qualcosa sull'argomento, ma devo ammettere che non ho capito molto bene come funzionano...

    ora, io ho uno script PHP che legge dei dati da un file CSV (che altro non è che un file di excel scritto in formato testuale con ";" come separatore), e ho bisogno che, ogni volta che incontra una cella con scritto "cifra,cifra" sostituisca con "cifra.cifra", questo perchè, mentre in excel i decimali si indicano con la virgola, in php si indicano con il punto... e ho bisogno di farlo con una espressione regolare, perchè non posso cambiare tutte le virgole in punti!

    qualcuno può aiutarmi? grazie!

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    133
    il programma non lo devo usare io, ma gente che se gli dico che devono cambiare le impostazioni della lingua del loro pc si mettono le mani nei capelli... deve essere una cosa fatta in maniera completamente trasparente all'utente finale, che è colui che invia i file excel al programma affinchè ne importi i dati...

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da tasso85
    il programma non lo devo usare io, ma gente che se gli dico che devono cambiare le impostazioni della lingua del loro pc si mettono le mani nei capelli...


    allora hai ragione. Non ho capito una cosa, sai già a priori la "dimensione" del csv, cioè quanti saranno i valori separati dal punto e virgola e quindi quali saranno quelli numerici?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    133
    si.. il CSV è un modello dove in cima ci sono i nomi delle colonne della tabella, e loro lo devono riempire, semplicemente... quindi so sempre quante sono le colonne... solo che in alcuni di questi file vanno inseriti dei numeri decimali, ma in excel ci va la virgola, e in php il punto... quindi devo trovare un modo per far si che ogni istanza di [numero],[numero] sia sostituita con [numero].[numero]... e penso si possa fare solo con le regexp, che però non ho capito bene come si usano...

    qualcuno me ne sa dire una funzionante?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    in corrispondenza dei valori che contengono virgole usi str_replace

    http://se.php.net/manual/it/function.str-replace.php

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    al di fuori del problema reg exp ...

    sto lavorando anche io con csv in questo periodo e ti posso garantire che se il file non è correttamente pulito ti si può sballare tutto, in quanto ti trovi delle sfilze di ;;;;;;;;;;;; per celle vuote che ovviamente l' utente non considera per chè le vede vuote (e gestire un csv da + di 30 MB con piu di 1.000.000 di linee dai retta a me php è fantastico!!), inoltre anche excell ci si mette di buon impegno in queste cose

    come te avevo lo stesso problema e ho usato str_replace(), comodo e veloce

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    133
    ho letto le istruzioni di quella funzione... ma accetta, nella stringa da cercare, un range di valori, tipo [0-9] per dire "una qualunque cifra tra 0 e 9"? perchè se no direi che non va bene...

    cioè io dovrei dirgli di cercare qualcosa del tipo "[0-9],[0-9]" e sostituirlo con "[0-9].[0-9]", e non mi pare che con quella funzione lo si possa fare... ovviamente, potrei semplicemente dirgli di sostituire tutte le virgole con punti, ma a questo punto verrebbero sostituite anche quelle virgole che vanno bene!

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    no se leggi il file riga per riga e ogni riga fai un explode(";",$riga)
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da tasso85
    ho letto le istruzioni di quella funzione... ma accetta, nella stringa da cercare, un range di valori, tipo [0-9] per dire "una qualunque cifra tra 0 e 9"? perchè se no direi che non va bene...

    cioè io dovrei dirgli di cercare qualcosa del tipo "[0-9],[0-9]" e sostituirlo con "[0-9].[0-9]", e non mi pare che con quella funzione lo si possa fare... ovviamente, potrei semplicemente dirgli di sostituire tutte le virgole con punti, ma a questo punto verrebbero sostituite anche quelle virgole che vanno bene!
    prova così
    codice:
    echo preg_replace( "/([\d]+)(,)([\d]+)/U", '\\1.\\3', $stringa );

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.