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

    Espressioni Regolari e Stringa Compresa tra

    Ciao a Tutti,
    allora sto studiando le espressioni regolari per un progetto,
    è ho necessità di valutare prendere all'interno di un dato $text,
    tutte le stringhe comprese tra due tag (supponiamo <tag></tag>)

    Ora utilizzando questo codice che ho scritto io (ogni miglioria è ben accetta):
    codice:
    preg_match_all("#<tag>+(.*?)+</tag>#", $text , $match);
    ottengo il risultato sperato, l'unico problema e che non riesco ad escludere i tag che delimitano ciò che mi interessa.

    In pratica i risultati sono stringhe del tipo:
    <tag>stringa a</tag>
    <tag>stringa b</tag>
    e non:
    stringa a
    stringa b

    Cosa dovrei fare per modificare questa espressione regolare? ci sono errori che commetto?
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Codice PHP:
    $stringa "<tag>ciao</tag>";
    echo 
    substr($stringastrpos($stringa">")+1strrpos($stringa,"</")); 

  3. #3
    Originariamente inviato da longilineo
    Codice PHP:
    $stringa "<tag>ciao</tag>";
    echo 
    substr($stringastrpos($stringa">")+1strrpos($stringa,"</")); 
    Grazie ma non credo che questa soluzione sia la corretta,
    tu hai provato con una stringa semplice, ma non con una complessa
    del tipo

    Codice PHP:
    $stringa "Ciao <tag>Mondo</tag> oggi come stai? <tag>Spero</tag> Bene!"
    Credo che per questo tipo di problematica sia necessaria un espressione regolare,
    io ci sono arrivato ad ottenere i risultati <tag>Mondo</tag> e <tag>Spero</tag> ma dovrei escludere i tag e visualizzare solo Mondo e Spero, credo che ci sia la possibilità di farlo con espressioni regolari, qualcuno mi aiuta a correggere la mia espressione?
    Grazie

  4. #4
    Devi guardare in $match[1] non $match[0].
    E comunque leva quei +

  5. #5
    Originariamente inviato da k.b
    Devi guardare in $match[1] non $match[0].
    E comunque leva quei +
    Grazie Mille,
    ho tolto i più che erano superflui (credevo fossero necessari) e la banalità è che dovevo vedere il match 1, il match 2 contiene la corrispondenza trovata senza però aver tolto i tag? (Scusami se approfitto per capire).

  6. #6
    $match[0] contiene l'intero pattern cercato
    $match[1] il contenuto della prima coppia di parentesi
    $match[2] il contenuto della seconda coppia di parentesi
    e via dicendo

    per preg_match() quei valori sono semplici stringhe, per preg_match_all() sono ovviamente array di stringhe.

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.