Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    espressioni regolari per prendere due lettere

    usando la funzione eregi, voglio prendere due lettere in una stringa

    io ho una serie di campi del genere

    nome: mario
    cognome: rossi
    stato: IT
    ecc...

    vorrei prendere solamente IT

    ho provato a fare

    eregi("stato: ([a-zA-Z]{,2})",$str,$arr);
    echo $arr[1];

    ma nn me la restituisce, suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    $stringa = "nome: mario cognome: rossi stato: IT altro_campo:";
    preg_match("/(stato:)(.*)(altro_campo)/",$stringa,$ris);
    echo $ris[2];

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da nicola75ss
    codice:
    $stringa = "nome: mario cognome: rossi stato: IT altro_campo:";
    preg_match("/(stato:)(.*)(altro_campo)/",$stringa,$ris);
    echo $ris[2];
    con eregi nn si può fare? preg è usa le espressioni regolari di perl o roba del genere e nn mi è mai piaciuto, ma cmq nn si può fare in modo di non mettere altro_campo e soprattutto di dire di prendere solo quelle 2 lettere?

  4. #4
    Originariamente inviato da FinalFantasy
    preg è usa le espressioni regolari di perl o roba del genere e nn mi è mai piaciuto
    ma è molto più potente e veloce dei corrispondenti ereg_*

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da FinalFantasy
    con eregi nn si può fare? preg è usa le espressioni regolari di perl o roba del genere e nn mi è mai piaciuto, ma cmq nn si può fare in modo di non mettere altro_campo e soprattutto di dire di prendere solo quelle 2 lettere?
    se ti stanno antipatiche non usarle... e tieniti il problema.
    Con ereg(i) non risolvi e anche se potessi sono più lente rispetto alle preg, quindi non vedo perchè tu le preferisca.

    Al posto di altro_campo ovviamente metterai quello che nel tuo modello di stringa viene dopo la sigla dello stato. Tu hai scritto ecc e io non posso sapere come è fatta.

  6. #6
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    ah...nn sapevo il fatto della velocità

    non so perché le preferisca...ma mi sembrava di aver capito in un post ke siano migliori o nn so...

    cmq, spesso altro campo nn è lo stesso di volta in volta...nn si può fare in modo ke io veda solo stato: IT e stop

    senza quello ek ci sta prima e quello ke ci sta dopo...

    a me servono sono quelle 2 dannate lettere e nn so come fare il pattern

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da FinalFantasy
    ah...nn sapevo il fatto della velocità

    non so perché le preferisca...ma mi sembrava di aver capito in un post ke siano migliori o nn so...

    cmq, spesso altro campo nn è lo stesso di volta in volta...nn si può fare in modo ke io veda solo stato: IT e stop

    senza quello ek ci sta prima e quello ke ci sta dopo...

    a me servono sono quelle 2 dannate lettere e nn so come fare il pattern
    io non sono per niente esperto di espressioni regolari. L'unica certezza che ho è che le preg siano più veloci e potenti rispetto alle ereg, proprio come ti ha detto skidx.

    Una soluzione potrebbe essere questa, ammesso che la stringa contenga sempre stato, i due punti, lo spazio e poi le due lettere.

    Codice PHP:
    $stringa "nome: mario cognome: rossi stato: IT eccetera";
    $cerca "stato:";
    $pos strpos($stringa,$cerca);
    if (
    $pos !== false) {
    echo 
    substr($stringa,$pos+7,2);


  8. #8
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da nicola75ss
    io non sono per niente esperto di espressioni regolari. L'unica certezza che ho è che le preg siano più veloci e potenti rispetto alle ereg, proprio come ti ha detto skidx.

    Una soluzione potrebbe essere questa, ammesso che la stringa contenga sempre stato, i due punti, lo spazio e poi le due lettere.

    Codice PHP:
    $stringa "nome: mario cognome: rossi stato: IT eccetera";
    $cerca "stato:";
    $pos strpos($stringa,$cerca);
    if (
    $pos !== false) {
    echo 
    substr($stringa,$pos+7,2);

    stato, due punti, spazio e due lettere dovrebbero essere una costante, ma le espressioni regolari tolgono questa incertezza

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da FinalFantasy
    stato, due punti, spazio e due lettere dovrebbero essere una costante, ma le espressioni regolari tolgono questa incertezza
    se non hai un pattern ben definito sarà difficile usare una regexp, almeno credo. ciao.

  10. #10
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    preg_match("/(country(\ )?([a-zA-Z]{2,2})/",$info,$arr);

    questo va cn una riga generata da me, ma quella generata dallo script no...why?


    % This is the RIPE Whois query server #2.
    % The objects are in RPSL format.
    %
    % Note: the default output of the RIPE Whois server
    % is changed. Your tools may need to be adjusted. See
    % http://www.ripe.net/db/news/abuse-pr...-20050331.html
    % for more details.
    %
    % Rights restricted by copyright.
    % See http://www.ripe.net/db/copyright.html

    % Note: This output has been filtered.
    % To receive output for a database update, use the "-B" flag

    % Information related to '151.46.0.0 - 151.46.255.255'

    inetnum: 151.46.0.0 - 151.46.255.255
    netname: IUNET-BNET46
    descr: IUnet
    descr: Via Lorenteggio 257
    descr: Milano, I-20100
    country: IT
    admin-c: IIS1-RIPE
    tech-c: IIS1-RIPE
    status: ASSIGNED PA
    mnt-by: AS1267-MNT
    mnt-lower: AS1267-MNT
    mnt-routes: AS1267-MNT
    source: RIPE # Filtered

    person: Infostrada Internet Staff
    address: Infostrada SpA
    address: Via Lorenteggio 257
    address: I-20152 Milano
    address: Italy
    phone: +39 02 413311
    e-mail: staff@iunet.it
    nic-hdl: IIS1-RIPE
    mnt-by: AS1267-MNT
    source: RIPE # Filtered

    % Information related to '151.46.0.0/16AS1267'

    route: 151.46.0.0/16
    descr: INFOSTRADA
    origin: AS1267
    remarks: removed cross-mnt: AS1267-MNT
    mnt-lower: AS1267-MNT
    mnt-routes: AS1267-MNT
    mnt-by: AS1267-MNT
    source: RIPE # Filtered
    il mio scopo è proprio prendere la riga di country

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.