Visualizzazione risultati 1 fino 2 di 2

Discussione: [Regex] Controllo e prelievo dati da una stringa HTML

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito [Regex] Controllo e prelievo dati da una stringa HTML

    Buonasera,
    avrei bisogno del vostro aiuto in quanto con le regex sono proprio negato.

    Avrei bisogno di una regex che:

    1. Controlli se nella variabile $string esistono formule del tipo {valore} e in caso positivo mi restituisca valore.
    2. Controlli se nella variabile $string esistono formule del tipo {dato}valore{/dato} ed in caso positivo mi restituisca valore e dato.
    3. Controlli se nella variabile $string esistono formule del tipo {dato|valore1}valore{/dato} e in caso positivo mi restituisca dato, valore1 e valore.


    La regex attualmente in uso per la seconda opzione è:
    Codice PHP:
    #\{([a-z]+)\}(.+)\{/[a-z]+\}#Us
    Mi aiutereste ad adattarla?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Io ho scritto una regexp, ma con PHP devi sempre distinguere i casi, cioè: {valore}, {dato}valore{/dato} e {dato|valore1}valore{/dato}:

    Codice PHP:
    <?php
    $string
    = '{valore}'; // o {dato}valore{/dato} o {dato|valore1}valore{/dato}

    preg_match('/^\{(\w+)(?:\|(\w+))?\}(?(1)(.+?)\{\/\\1\})?$/', $string, $m);

    // ecco come puoi distinguere i casi:
    $m2 = empty($m[2]);
    $m3 = empty($m[3]);

    if(
    $m2 && $m3) { // {valore}
    // $m[1] = valore

    // ...
    } else if($m2 && !$m3) { // {dato}valore{/dato}
    // $m[1] = dato
    // $m[3] = valore

    // ...
    } else if(!$m2 && !$m3) { // {dato|valore1}valore{/dato}
    // $m[1] = dato
    // $m[2] = valore1
    // $m[3] = valore

    // ...
    }
    ?>

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •