Una mano per preg_replace

4 views
Skip to first unread message

Ziobudda

unread,
Mar 4, 2014, 3:26:18 AM3/4/14
to zb-p...@googlegroups.com
Ciao all, scusate ma ancora una volta sono qui a chiedervi una mano per una preg_replace

Devo trasformare questo : 

[quote author=XXXX link=topic=137308.msg208143#msg208143 date=1389302491]foo bar bar foo[/quote]

in 

[quote=XXXX]]foo bar bar foo[/quote]

i campi “link” e “date” non ci sono sempre. 

E mi servirebbe che fosse annidato: 

 [quote author=XXXX link=topic=137308.msg208143#msg208143 date=1389302491]
[quote author=YYYY link=topic=137308.msg208143#msg208143 date=1389302491]foo bar bar foo[/quote]
 [/quote]

[quote=XXXX]]
[quote=YYYY]]foo bar bar foo[/quote]
[/quote]


Grazie mille e scusate per la domanda banale. Ma proprio per regular expr. io non le capisco.

M.

--
Davide Morelli




Davide Bellettini

unread,
Mar 4, 2014, 6:07:59 AM3/4/14
to ML Zio Budda PHP
Il 04 marzo 2014 09:26, Ziobudda <ziob...@gmail.com> ha scritto:
> E mi servirebbe che fosse annidato:
Ti serve davvero verificare la corrispondenza con il tag di chiusura?
Perché secondo Chomsky (Cristiano correggimi se sbaglio) sarebbe una
grammatica di tipo 2 che non puoi riconoscere con una espressione
regolare.

Davide


--
Davide Bellettini

dav...@bellettini.me
http://bellettini.me/
http://it.linkedin.com/in/davidebellettini/

Ziobudda

unread,
Mar 4, 2014, 6:12:56 AM3/4/14
to zb-p...@googlegroups.com
Il giorno 04/mar/2014, alle ore 12:07, Davide Bellettini <dav...@bellettini.info> ha scritto:

Il 04 marzo 2014 09:26, Ziobudda <ziob...@gmail.com> ha scritto:
E mi servirebbe che fosse annidato:
Ti serve davvero verificare la corrispondenza con il tag di chiusura?
Perché secondo Chomsky (Cristiano correggimi se sbaglio) sarebbe una
grammatica di tipo 2 che non puoi riconoscere con una espressione
regolare.

Oddio, io so che il dato di partenza è corretto quindi il [/quote] esiste sicuramente. Potrei anche non volere il [/quote] se viene fuori un casino.

Cristiano Verondini

unread,
Mar 4, 2014, 8:58:53 AM3/4/14
to zb-p...@googlegroups.com

E’ vero, ma mi sa che nel suo caso la questione possa essere trattata in modo molto più semplice, poiché se non ho capito male dovrebbe essere sufficiente una sostituzione del tipo:

[quote author=XXXX link=topic=137308.msg208143#msg208143 date=1389302491] -> [quote=XXXX]

(immagino che nella mail originale la doppia ‘]]’ di chiusura sia un typo.

In questo caso quindi non è necessario affrontare il problema dell’annidamento generico e con un semplice replace di:

~\[quote\s+author=(\w+)[^\]]*]~

in

[quote=\1]


puoi cavartela. Vedi qui per un test case: http://regex101.com/r/qB6wB6


On 04/mar/2014, at 12.07, Davide Bellettini wrote:

>> E mi servirebbe che fosse annidato:
> Ti serve davvero verificare la corrispondenza con il tag di chiusura?
> Perché secondo Chomsky (Cristiano correggimi se sbaglio) sarebbe una
> grammatica di tipo 2 che non puoi riconoscere con una espressione
> regolare.


--
Cristiano Verondini
http://verondini.it/ - http://about.me/cverond

Ziobudda

unread,
Mar 4, 2014, 9:12:58 AM3/4/14
to zb-p...@googlegroups.com
Ciao, dove è che sbaglio ? 

$vars['content']['comment_body'][0]['#markup'] = preg_replace("/\[quote\s+author=(\w+)[^\]]*]/g”,”[quote=$1]",$vars['content']['comment_body'][0]['#markup']);

Cristiano Verondini

unread,
Mar 4, 2014, 9:31:29 AM3/4/14
to zb-p...@googlegroups.com

Probabilmente copia/incolla di codice UTF8:


On 04/mar/2014, at 15.12, Ziobudda wrote:

Ciao, dove è che sbaglio ? 

$vars['content']['comment_body'][0]['#markup'] = preg_replace("/\[quote\s+author=(\w+)[^\]]*]/g”,”[quote=$1]",$vars['content']['comment_body'][0]['#markup']);



Ziobudda

unread,
Mar 4, 2014, 10:01:47 AM3/4/14
to zb-p...@googlegroups.com
Il giorno 04/mar/2014, alle ore 15:31, Cristiano Verondini <cris...@verondini.it> ha scritto:


Probabilmente copia/incolla di codice UTF8:


Scusami, ma non l’ho capita.

M.


On 04/mar/2014, at 15.12, Ziobudda wrote:

Ciao, dove è che sbaglio ? 

$vars['content']['comment_body'][0]['#markup'] = preg_replace("/\[quote\s+author=(\w+)[^\]]*]/g”,”[quote=$1]",$vars['content']['comment_body'][0]['#markup']);





--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "zb-php-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a zb-php-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a zb-p...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/zb-php-it.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.

--
Davide Morelli




Ziobudda

unread,
Mar 4, 2014, 10:10:58 AM3/4/14
to zb-p...@googlegroups.com
Ciao ancora, 

Il giorno 04/mar/2014, alle ore 15:31, Cristiano Verondini <cris...@verondini.it> ha scritto:


Probabilmente copia/incolla di codice UTF8:



La riga: 

 var_dump(preg_replace("/\[quote\s+author=(\w+)[^\]]*]/g", "[quote=$1]", $vars['content']['comment_body'][0]['#markup']));

mi ritorna NULL

Sempre.  Qualsiasi testo ci sia dentro a $vars['content']['comment_body'][0]['#markup’];

Sul browser io vedo correttamente $vars['content']['comment_body'][0]['#markup’], senza caratteri strani. 
La cosa che non capisco è il NULL.
Sono sicuro che $vars['content']['comment_body'][0]['#markup’] sia la variabile (passatemi il termine) corretta, perché se aggiungo la linea:

$vars['content']['comment_body'][0]['#markup’] = ‘aaaa’

Vedo (a video) tutto il testo sostituito da ‘aaaa’

Il PHP è uno delle ultime versioni uscite.

Marcello Vezzelli

unread,
Mar 4, 2014, 10:13:44 AM3/4/14
to zb-p...@googlegroups.com
Il 04/03/2014 16:10, Ziobudda ha scritto:
> Sul browser io vedo correttamente
> $vars['content']['comment_body'][0]['#markup’], senza caratteri strani.

a proposito di caratteri strani...
dopo #markup c'è un apice che non è un apice :)

ciao
Marcello

Ziobudda

unread,
Mar 4, 2014, 10:14:53 AM3/4/14
to zb-p...@googlegroups.com

Il giorno 04/mar/2014, alle ore 16:10, Ziobudda <ziob...@gmail.com> ha scritto:

Ciao ancora, 

Il giorno 04/mar/2014, alle ore 15:31, Cristiano Verondini <cris...@verondini.it> ha scritto:


Probabilmente copia/incolla di codice UTF8:



Scusate, ma probabilmente ho sbagliato io a darvi una indicazione (anche se non penso visto l’annidamento).
Il testo potrebbe anche essere di questo tipo:

Lorem ipsum dolor sit amet, consectetur adipiscing  elit. [quote author=XXXX link=topic=137308.msg208143#msg208143 date=1389302491]Donec vitae blandit ipsum. Donec sed diam quis ligula aliquam volutpat nec at est.[/quote] Suspendisse a mi ornare, vehicula neque non, faucibus est. Quisque tempus ultrices odio, ut congue velit sodales quis. Mauris nec mattis massa. Sed posuere enim quis tellus aliquam convallis. 

Non penso che cambia qualche cosa rispetto a prima, ma magari si.

Ziobudda

unread,
Mar 4, 2014, 10:16:53 AM3/4/14
to zb-p...@googlegroups.com
Sul mio editor è un apice. Ed il PHP non mi da errori di apici non corretti.
Vi aggiungo anche che :

$a = '[quote author=XXXX link=topic=137308.msg208143#msg208143 date=1389302491]foo bar bar foo[/quote]';
 
var_dump(preg_replace("/\[quote\s+author=(\w+)[^\]]*]/g", "[quote=$1]", $a));


Mi ritorna NULL

M.
--
Davide Morelli




Cristiano Verondini

unread,
Mar 4, 2014, 10:24:52 AM3/4/14
to zb-p...@googlegroups.com

Togli il modificatore ‘g’.

On 04/mar/2014, at 16.16, Ziobudda wrote:

Sul mio editor è un apice. Ed il PHP non mi da errori di apici non corretti.
Vi aggiungo anche che :

$a = '[quote author=XXXX link=topic=137308.msg208143#msg208143 date=1389302491]foo bar bar foo[/quote]';
 
var_dump(preg_replace("/\[quote\s+author=(\w+)[^\]]*]/g", "[quote=$1]", $a));


Mi ritorna NULL


Marcello Vezzelli

unread,
Mar 4, 2014, 10:38:51 AM3/4/14
to zb-p...@googlegroups.com
Il 04/03/2014 16:16, Ziobudda ha scritto:


a proposito di caratteri strani...
dopo #markup c'è un apice che non è un apice :)


Sul mio editor è un apice. Ed il PHP non mi da errori di apici non corretti.
Sul browser io vedo correttamente $vars['content']['comment_body'][0]['#markup'], senza caratteri strani.

Non so se passa in ml, ti metto uno screenshot di come ho visto la tua mail guardando il codice sorgente del messaggio.

----

----

L'apice di chiusura è stato tradotto come &rsquo; .
Da qualche parte qualcosa ha modificato l'apice, probabilmente il tuo client di posta e/o un passaggio di copia/incolla da/per un word processor.

Giusto per tua comodità se dovessero succederti cose strane con codice copiato/incollato.

ciao
Marcello

Alessandro Marinuzzi

unread,
Mar 5, 2014, 4:36:14 AM3/5/14
to zb-p...@googlegroups.com
Il 04/03/2014 16:38, Marcello Vezzelli ha scritto:
Non so se passa in ml, ti metto uno screenshot di come ho visto la tua mail guardando il codice sorgente del messaggio.

Ragazzi se avete qualche dubbio perché non passare le regex su http://pastebin.com/ ? Mettete la vostra sintassi, la scadenza e il tipo di esposizione dello snippet e poi appena creato il link lo riportate in ML... non mi sembra malaccio come sistema... :-P
-- 
Alessandro Marinuzzi
--------------------
http://www.alecos.it
--------------------

Ziobudda

unread,
Mar 5, 2014, 4:43:52 AM3/5/14
to zb-p...@googlegroups.com
Hai ragione. Non ci avevo pensato. 
Scusatemi.

Comunque ora tutto funziona. Grazie a tutti.

M.

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "zb-php-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a zb-php-it+...@googlegroups.com.
Per postare in questo gruppo, invia un'email a zb-p...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/zb-php-it.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.

--
Davide Morelli




Reply all
Reply to author
Forward
0 new messages