[Php-it] [PREG] riconoscere testo racchiuso
Domenico L.
domenico.lorusso at pleiade.it
Tue Nov 7 12:19:30 CET 2006
ciao ragazzi,
dato questo testo:
{nome}
{cognome||constraints=>required,string}
{cittaNascita||label=>a ||group=>nascita}
{dataNascita||label=> il (gg/mm/yyyy) ||group=>nascita||constraints=>date}
{nascita||label=>nato}
{professione||
type=>select||
options=>0:informatico,1:meccanico,2:consulente finanziario,3:nulla facente}
{redditoAnnuo||constraints=>numeric}
{testoReddito||
type=>relatedValue||
value=>professione||
options=>0: che guadagna $redditoAnnuo all'anno.
,1: che più di $redditoAnnuo all'anno.
,2: che meno di $redditoAnnuo all'anno.
,3:.}
{testoNumerico||outValuate=>e-val:
$valore=trim($valore);
if (preg_match('§^[0-9]\{1,2\}([\\ -/.])[0-9]\{1,2\}\1[0-9]\{2,4\}$§sUD',$valore)
return $valore;
else return date('d/m/Y');
}
vorrei ottenre in un array il testo racchiuso tra le graffe, senza le
graffe, ora è possibile che all'interno delle graffe ci sia la necessità
di utilizzarle per questo motivo deve essere possibile l'escaping:
questo è il codice (le graffe sono il default ma uno potrebbe usare
qualsiasi carattere)
$_openVariableChar='{';
$_closeVariableChar='}';
$oChar=preg_quote($_openVariableChar,'/');
$cChar=preg_quote($_closeVariableChar,'/');
$bslah=preg_quote('\\');
$er="/(?<!$bslah)$oChar(\w+((?<=$bslah)$oChar|(?<=$bslah)$cChar|[^{$_closeVariableChar}])*)$cChar/sUD";
#echo '<pre>'.htmlentities($er)."\n------\n$a</pre>";
Che funziona anche bene se non c'è nidificazione, ma ne caso
dell'ultimva "variabile" (testoNumerico) il riconoscitore si interrompe
alla prima } che incontra quella dopo 1,2\
Sapete dirmi dove sbaglio?
ciao e grazie
--
Domenico L. icq: 645 44 861
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]
More information about the Php-it
mailing list