Ragazzi, sto impazzendo tutta la sera, ma almeno ho imparato un pò di più le epressioni regolari!
Allora, sto facendo un parsing per i BBcode e ho voluto iniziare con quello del QUOTE perché è quello che, per ora, prevvede più parametri.
Ora, avendo questo eventuale codice:
Codice PHP:
preg_replace(
'#\[quote(="([a-zA-Z0-9-_]*?)")?(\sp="([0-9]*?)")?\](.*?)\\[\/quote\]#is',
'<blockquote><div>$2 scrive nel post $4:</div>$5</blockquote>',
'[quote="Username" p="1"]Testo[/quote]'
)
Come posso fare per mostrare o meno $2 e scrive nel post $4:? Ho provato così, utilizzando l'operatore e:
Codice PHP:
preg_replace(
'#\[quote(="([a-zA-Z0-9-_]*?)")?(\sp="([0-9]*?)")?\](.*?)\\[\/quote\]#ise',
'"<blockquote>" . ($2 ? "<div>$2 scrive" . ($4 ? "nel post $4" : "") . ":</div>" : "") . "$5</blockquote>"',
'[quote="Username" p="1"]Testo[/quote]'
)
ma prendono il nome dai valori e mi resituisce errore:
Codice:
Notice: Use of undefined constant Username - assumed 'Username' in C:\xampplite\htdocs\new_mp\forum.php(17) : regexp code on line 1
Non ho trovato una guida decente su preg_replace() e devo fare ad intuito e da quel poco che si capisce dal manuale!

Grazie in anticipo