Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    strana espressione regolare

    Interrogando un server DNS sui record NAPTR (quelli che gestiscono i servizi di VOIP) ottengo un espressione regolare del tipo:
    codice:
    !^\+39053297(.*)$!sip:\1@sip.domain.it!
    con il campo di replacement vuoto. Dovrei farla matchare con un numero di telefono tipo +39053297xxxx, e in teoria ottenere qualcosa@sip.domain.it. Mi lascia però perplesso il fatto che il campo di replacement sia vuoto.
    Ho provato ad usare ereg_replace(regexp, replacement, num_telefono) ma non ottengo nulla. Qualche idea?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    ok, ho approfondito un po' la cosa, ma ho ancora un po' di problemini.

    allora, io ho
    codice:
    ^\+39053297(.*)$
    che mi fa match con un numero tipo +39053297nnnn.
    adesso fuziona così:
    la parte
    codice:
    sip:\1@sip.domain.it
    mi dice che dove c'è \1 devo sostituire con tutto il contenuto della prima parentesi dell'espressione regolare che fa match col mio numero di telefono. Spiegato così fa schifo, faccio un esempio (preso direttamente dall'rfc):
    codice:
    (A(B(C)DE)(F)G)
    \1  = ABCDEFG
    \2  = BCDE
    \3  = C
    \4  = F
    \5..\9  = error - no matching subexpression
    il problema sta nel fatto che nella mia regexp la prima e unica parentesi che trovo è (.*), e alla fine io dovrei ottenere sip:nnnn@sip.domain.it.

    qualcuno ha una qualche idea di come potrebbe essere implementata la cosa?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    5
    Codice PHP:
    <?php
    $numero 
    '+39053297xxxx' ;
    $risultato preg_replace'/^\+39053297(.*)$/''sip:\\1@sip.domain.it'$numero ) ;
    ?>
    nota: + ha una slash davanti e sip:\1 va con due slash, ma qui non lo visualizza.

    così per capirci:

  4. #4
    mmm...capisco, ma così è fatta ad hoc per il caso particolare.
    ma in generale potrebbe esserci scritto anche:
    codice:
    ^\+39053297(qualcos'altro(.*))$
    e con
    codice:
    sip:\2@sip.domain.it
    voglio prendere solo ciò che fa match dentro la seconda parentesi, ovvero tipo se ho +39053297QUALCOSA_CHE_MATCHA_CON_qualcos'altroNNNN , voglio prendere solo l'NNNN.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    5
    ma NNNN è sempre lo stesso o varia?

    perchè se hai un testo variabile e vuoi estrarre una parte variabile non ha senso...

    cioè tu hai una parte che non cambia mai e una fissa o comunque conosciuta ?

  6. #6
    no, NNNN chiaramente varia, una certa organizzazione può avere in gestione un certo numero di numeri di telefono che iniziano per +39053297. Mette nel dns un record naptr con un'espressione regolare per evitare di mettere una riga per ogni numero che ha in gestione.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    5
    mmm...

    comunque l'espressione regolare andrà strutturata così:

    codice:
    /^PARTE_STATICA(.*)$/
    e poi ricavi la PARTE_VARIABILE usando la sintassi postata prima

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.