Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    278

    preg_match di una stringa

    Ciao a tutti,ho una stringa del tipo:
    Codice PHP:
    $stringa="mia stringa Art. 7"
    tramite le espressioni regolari vorrei verificare se nella mia stringa è presente Art. con numero diverso (cioè puo' essere 7, 8 ,2 etc...)
    e quindi ottenere una cosa così:
    Codice PHP:
    $stringa="art7";
    //oppure art8 se il numero vale 8 
    $stringa="art8"
    come potri fare?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non ho capito, quando hai detto del numero diverso.
    Tu vuoi sapere che numero c'è dopo Art. e prendere quel pezzo di stringa?
    $Stringa = "mia stringa Art. 7";
    //espressione regolare, ecc...
    $stringa = "Art. 7";

    Oppure all'interno di una stringa può apparire più volte Art. e vuoi prendere tutti i valori che compaiono?
    $stringa = "mia stringa Art. 7, ma c'è anche Art. 8";
    //espressione regolare, ecc...
    $stringa1 = "Art. 7";
    $stringa2 = "Art. 8"

    Quale dei due casi ti interessa? Oppure se nessuno di questi spiega meglio il problema.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    278
    Intanto grazie della risposta,nella stringa ho un solo art ma il numero puo' cambiare,ho messo 7 come esempio,puo' essere 8 o altro....

    vorrei che se verificato che all'interno vi sia Art. 8 che potrebbe contenere lo spazio tra art. e il numero,vorrei ottenere:

    $stringa='art8'

    spero di essere statra chiara..

    grazie ancora

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    278
    non cè soluzione?

  5. #5
    Ciao,
    con questa espressione regolare
    codice:
    /Art\. ([0-9]{1,})/
    puoi estrarre il numero dell'articolo.
    Es.
    Codice PHP:
    preg_match("/Art\\. ([0-9]{1,})/",$stringa,$match);
    $numero_articolo $match[1]; 
    Se vuoi che lo spazio tra Art. e il numero sia facoltativo puoi usare:
    codice:
    /Art\.[ ]*([0-9]{1,})/
    Se vuoi che sia "case insensitive" devi mettere un "i" dopo l'ultimo /
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    278
    Grazie funziona!
    Un'altra cosa!se nella mia stringa ho piu' valori Art. come si dovrebbe modificare l'espressione?

  7. #7
    Puoi usare preg_match_all con gli stessi parametri.
    In questo caso $match[1] non conterrà il numero dell'articolo, ma un array con tutti i numeri trovati.
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    278
    Mi sono intoppata..

    ho provato con un stringa tipo:

    $stringa=" testo testo Art. 7 testo testo testo Art. 8 testo testo";

    Codice PHP:
    $stringa=strtolower($stringa);
    if(
    preg_match_all("/[art\.]+ ([0-9]{1,})*/",$a,$match))
     {
       for(
    $i=0;$i<count($match[0]);$i++)
       {

     
    $stringa=str_replace($match[0][$i],"<".$match[0][$i].">",$stringa);
      
      }
     } 
    vorrei ottenere:
    Codice PHP:
    $stringa=" testo testo <art7> testo testo testo <art8> testo testo"
    ma non va

  9. #9
    A parte il fatto che l'espressione regolare è sbagliata... puoi far tutto con un'unica funziona: preg_replace
    Codice PHP:
    $nuova_stringa preg_replace ('/Art\.[ ]*([0-9]{1,})/i''<art$1>'$stringa); 
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

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.