"&amp" al posto di "&"

Aperto da Flavio93Zena, Venerdì - 23 Gennaio 2015 - 23:51

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

Flavio93Zena

Come dice il titolo... Mi accade che il "&" venga sostituito da "&amp" nei titoli dei topic --> http://virtualinteractivege.com/index.php?topic=85.0 per esempio questo qui...
Onestamente non so spiegarmelo. Da notare però che ho effettuato qualche modifica al post.php --> http://www.simplemachines.org/community/index.php?topic=529975.0 sia quelle di Arantor sia quelle di Fortytwo.
Idee? Il forum è sempre stato Utf-8 e tutto il resto funziona a dovere, per quel che ne so è solo quel carattere a rompere i Roberto Maroni...

Grazie in anticipo :)

emanuele

#1
// Spaces after punctuation except for last one
$_POST['subject'] = trim(preg_replace('~([!,\.;:&])~', '$1 ', $_POST['subject']));

Dovrebbe probabilmente essere:
// Spaces after punctuation except for last one
$_POST['subject'] = trim(preg_replace('~([!,\.;:])~', '$1 ', $_POST['subject']));

Correggere la punteggiatura via codice non è mai una buona idea IMHO. Meglio se gli insegnanti di italiano facessero il loro dovere (bastonando chi non impara invece di farli passare perché altrimenti restano traumatizzati <= parla quello che aveva 4 di grammatica).

Flavio93Zena

Fastidiosissimo edge case...
Facendo così in pratica si auto-trimma lo spazio antecedente il "&", cioè "Posts & Karma rewards" diventa "Posts& Karma rewards"... Però siccome sono in vena di guardare quel che hai fatto e seguire lo schema...
Codice (trova) Seleziona
$_POST['subject'] = preg_replace('~\s+([!,\.;:&])\s*~', '$1', $_POST['subject']); è diventato
Codice (sostituisci) Seleziona
$_POST['subject'] = preg_replace('~\s+([!,\.;:])\s*~', '$1', $_POST['subject']); e ora funziona come dovrebbe :D grazie mille, preziosissimo!

P.s. Seriamente avevi 4 in grammatica? Azz sarà... Io ero arrivato al 9 ma non vedo differenze nel modo di scrivere, tranne per il fatto che tu sei più coder, onestamente non ho mai visto un errore grammaticale da parte tua IIRC.
E.. Lo so che non è una buona idea correggere via codice ma dovresti anche considerare il numero di bambini che verrà sul forum a spammare titoli come "OMG OMG!!!??!!!!111" e simili... Lol.

emanuele

Tecnicamente non è un edge case, ma più un errore di valutazione di Arantor. :P
$_POST['subject'] a quel punto è probabilmente passato (di già) attraverso htmlspecialchars, quindi & è stato convertito in &amp; quindi quel che lui ha postato con il secondo preg_replace andava/va a spezzare il &amp; in "& amp;" con il risultato che vedi.
Non conosco la grammatica inglese, ma la & la vedrei o attaccata ad entrambe le parole o staccata da entrambe, non attaccata alla prima e staccata dalla seconda, ma... boh.
Poi, se non ricordo male, la grammatica inglese prevederebbe il doppio spazio dopo la punteggiatura...o è quella francese?... non ricordo ma, fondamentalmente, chissene. :P

Flavio93Zena

;D se non fossi bannato e in altri tempi lo punzecchierei per questo, lol.
Onestamente non lo so riguardo alla grammatica inglese... Personalmente quel simbolo lo metto staccato da entrambe le parti perchè mi piace di più :)

Citazione di: emanuele il Sabato - 24 Gennaio 2015 - 16:18
non ricordo ma, fondamentalmente, chissene. :P
+1

Discussioni simili (2)