Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317

    Problema eregi_replace & regex in stile posix

    dovrei creare una funzione che elimina gli spazi identicamente come fa trim e quindi ho provato con questa regex:

    Codice PHP:
    print eregi_replace('^[\s]|[\s]$'''' ciao '); 
    Ma non va...

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ma scusa usare trim ???

    Se devi farla uguale usa trim.

    senno prova
    Codice PHP:
    print eregi_replace('[ ]'''' c i a o '); 

  3. #3
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    oppure con le regexp

    Codice PHP:
    print preg_replace("#\s#"""$string); 
    mi toglie lo \ il tag php..


    print preg_replace("#\s#", "", $string);

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    scusa e di che stiamo parlando???

    un modo di fare regexp come trim solo per spazi vuoti e' anche

    Codice PHP:

    eregi_replace
    ('^[ ]|[ ]$'''' c i a o '

  5. #5
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    ma dici a me?

    eregi_replace č per le posix

    preg_replace per le perl compatible

    ovvio che sono entrambe espressioni regolari..

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    apparte che avevo copiato male "\s" e avevo scritto solo "s", cmq non pensavo si potesse fare
    [ ...spazio... ]

    anche se non č come trim, di due spazi " " ne toglie solo uno. ecco perchč volevo usā \s ( solo che non funziona )

    il punto č che devo farlo come esercizio, altrimenti avrei usato con piacere trim

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    alora usa la *

    eregi_replace('^[ ]*|[ ]*$', '', ' c i a o ')

    e cmq anche senza * togli tutti gli spazi all'inizio e a fine stringa se vuoi espanderla per \n e \r e \t

    eregi_replace("^[ ,\n,\r,\t]*|[ ,\n,\r,\t]*$", '', " \tc i a o come stai \n" )

    Attento ad usare i doppi apici invece degli apici songoli per far funzionare la reg-exp.

    Questa toglie tutto ad inizio e a fine stringa tutti i caratteri di nuova linea unix(\\n), mac(\\r) ,
    tabulazioni (\\t) e spazi.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    grazie, anche per i suggerimenti

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Codice PHP:
    <?

    if ( eregi('^(http:\/\/|http:\/\/www\.)[a-zA-Z0-9._-]',  'http://www.aasds.it/\\sad/') )
    {
    print 
    "ok";
    }

    ?>
    com'č che printa "ok" anche se utilizzo le backslashes \/ ?

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Perche' e' giusto cosi' in base alla regexp che hai messo.

    Controlla la documentazione qui

    e poi tu fai

    ^(http://|http://www.)

    quindi deve controllare che la stringa inizi per :
    http://
    oppure
    http://www.

    il che e' corretto
    tale sottostringa inoltre per dare esito positivo deve essere concatenata a
    [a-zA-Z0-9._-]
    Ossia una qualsiasi stringa alfanumerica maiuscole-minuscole senza caratteri speciali.

    La stringa che passi \s credo venga visto come singolo carattere s

    io farei cosi
    [a-z,A-Z,0-9,.,_,-]

    Cmq nn sono prorpio un guru di regexp prova.

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.