Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648

    [regexp] Trovare stringa compresa tra due caratteri

    Io e le espressioni regolari abbiamo un pessimo rapporto.

    Ho la necessità di estrapolare tutte le stringhe comprese tra due caratteri, esempio:

    codice:
    Ciao @paolo: ho bisogno del tuo aiuto
    la stringa da estrarre è [b]paolo[/p] compresa tra la ( @ ) e i ( : )

    Fin qui ci sarei anche riuscito, ma il problem si pone quando la stringa è più complessa

    codice:
    Ciao @paolo: e @luigi: ho bisogno del vostro aiuto
    L'espressione regolare che sto utilizzando mi trova:
    - paolo
    - luigi
    - paolo: e @luigi

    e naturalmente non va bene in quanto il 3 risultato non è corretto.

    Help!!!

  2. #2
    Posta la soluzione che stai utilizzando.
    Sono disponibile per realizzare lavori su commissione.

  3. #3
    Io proverei in questo modo:
    Codice PHP:
    <?php
    $string
    ="Ciao @paolo: e @luigi: ho bisogno del vostro aiuto";

    $pos1 strpos($string"@");

    $pos2 strpos($string":"$pos1);

    $text substr($string,$pos1,$pos2-$pos1);
    echo 
    $text;
    ?>
    Al massimo lo metterei in un ciclo se c'è più di una occorrenza ma eliminando quella che ho appena letto.
    Sono disponibile per realizzare lavori su commissione.

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Codice PHP:
    <?php 
    $testo
    =
    "Ciao @paolo: e @luigi: ho bisogno del vostro aiuto e mi rivolgo anche a @marco:

    sto cercandi di parlare con @antonio: ma non mi calcola proprio :-(

    @luciano: ci sei????
    "
    ;
    preg_match_all('#@(?P<user>[a-z]+):#Usmi',$testo,$res);
    var_dump($res['user']);
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    111
    Forse basterebbe controllare che il risultato NON contenga uno dei caratteri di separazione ( "@" e ":" ).

  6. #6
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Originariamente inviato da dottwatson
    Codice PHP:
    <?php 
    $testo
    =
    "Ciao @paolo: e @luigi: ho bisogno del vostro aiuto e mi rivolgo anche a @marco:

    sto cercandi di parlare con @antonio: ma non mi calcola proprio :-(

    @luciano: ci sei????
    "
    ;
    preg_match_all('#@(?P<user>[a-z]+):#Usmi',$testo,$res);
    var_dump($res['user']);
    ?>
    Perfetta, grazie mille!

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.