Domanda

Sto cercando di venire = con una stringa regex da utilizzare con le funzioni PHP preg (preg_match, ecc) e sono perplesso su questo:

Come si corrispondono questa stringa:?

{area-1}some text and maybe a <a href="http://google.com">link</a>.{/area-1}

Voglio sostituirlo con una stringa diversa utilizzando preg_replace.

Finora sono stato in grado di identificare il primo tag con preg_match in questo modo:

preg_match("/\{(area-[0-9]*)\}/", $mystring);

Grazie se si può aiutare!

È stato utile?

Soluzione

Se non si dispone di tag annidati, qualcosa di così semplice dovrebbe funzionare:

preg_match_all("~{.+?}(.*?){/.+?}~", $mystring, $matches);

I tuoi risultati possono essere poi trovati in $matches[1].

Altri suggerimenti

Vorrei suggerire

preg_match_all("~\{(area-[0-9]*)\}(.*?)\{/\1\}~s", $mystring, $matches);

Questo funziona anche se altri tag sono annidati all'interno del tag area che stai guardando.

Se si dispone di diversi tag area annidati uno dentro l'altro, sarà ancora funzionare, ma è necessario applicare le più volte regex (una volta per ogni livello di nidificazione).

E, naturalmente, il contenuto delle partite saranno in $matches[2], non $matches[1] come nella risposta di Tatu.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top