Voglio {{User:JYBot/count|700,000}}
in php che corrisponda a dichiarazioni come: {{User:JYBot/count|700,000}}
commnet: solo il numero 700.000 è variabile e altri sono fissi.
Ho scritto questo: '/\{\{User:JYBot/count\|\d{1,10}\}\}/'
ma non funziona correttamente, a causa dell'esistenza di /
in esso. Anche l'espressione regolare non funziona correttamente: '/\{\{User:JYBot\/count\|\d{1,10}\}\}/'
Per favore aiutami a riguardo. Saluti
Qualche piccolo how-to. Prendi la tua corda:
{{User:JYBot/count|700,000}}
Racchiudere le parti che dovrebbero essere allineate alla lettera in \Q...\E
:
\Q{{User:JYBot/count|\E ... \Q}}\E
Ora sostituisci la parte dynamic 700,000
con il suo model, ad esempio [\d,]{1,10}
:
\Q{{User:JYBot/count|\E[\d,]{1,10}\Q}}\E
Aggiungi i delimitatori (ce ne sono più di /
, prendi uno non parte della string fino ad ora o qualcosa con parentesi come ()
/ {}
o []
) e hai finito:
~\Q{{User:JYBot/count|\E[\d,]{1,10}\Q}}\E~
Prova quanto segue:
/\{{2}User:JYBot\/count\|([0-9\,]+)\}{2}/is
Tuttavia, otterrai la virgola nel numero, quindi dovrai spostarlo di nuovo.
Questo dovrebbe funzionare, assumendo che il numero sia diviso in virgole:
/\{\{User:JYBot\/count\|\d{1,3}(?:,\d{3})*\}\}/
O devi sfuggire alle tue barre o usare delimitatori diversi:
sfuggire alle barre:
'/\{\{User:JYBot\/count\|\d{1,10}\}\}/'
diversi delimitatori:
'~\{\{User:JYBot/count\|\d{1,10}\}\}~'
È necessario sfuggire al /
dal parser di espressioni regolari, il che significa che il parser deve vedere un \
before it. Tuttavia, l'espressione di string PHP "\/"
sta per essere valutata come "/"
– si sfugge la barra in avanti dal parser letterale string di PHP, e quindi il carattere \
non finisce per essere parte della string finale.
Per get un \
reale nella string, utilizzare due di essi:
'/\{\{User:JYBot\\/count\|\d{1,10}\}\}/'
Il parser delle espressioni regolari vedrà quindi la \/
sequenza che intendi.