In questo momento sto usando questa funzione per le emoticon:Un modo migliore per sostituire le emoticon in PHP?
function emoticons($text) {
$icons = array(
':)' => '<img src="/images/blank.gif" alt="smile" class="icon_smile" />',
':-)' => '<img src="/images/blank.gif" alt="smile" class="icon_smile" />',
':D' => '<img src="/images/blank.gif" alt="smile" class="icon_laugh" />',
':d' => '<img src="/images/blank.gif" alt="laugh" class="icon_laugh" />',
';)' => '<img src="/images/blank.gif" alt="wink" class="icon_wink" />',
':P' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':-P' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':-p' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':p' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':(' => '<img src="/images/blank.gif" alt="sad face" class="icon_sad" />',
':o' => '<img src="/images/blank.gif" alt="shock" class="icon_shock" />',
':O' => '<img src="/images/blank.gif" alt="shock" class="icon_shock" />',
':0' => '<img src="/images/blank.gif" alt="shock" class="icon_shack" />',
':|' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />',
':-|' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />',
':/' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />',
':-/' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />'
);
return strtr($text, $icons);
}
Ma se si inserisce un link parte :/
di http://
viene sostituito:
Stessa cosa con il codice (4 spazi di fronte di ogni riga per creare la casella di codice), ma per qualche motivo un semplice )
viene sostituito (con un occhiolino) pure:
C'è una soluzione migliore a questo rispetto alla sostituzione di tutte le icone come questa? Ovviamente non funziona bene. Ho cercato su Google molto e non ho trovato alcun modo migliore. Ho anche provato a mettere uno spazio prima di ogni emoticon nell'array associativo in alto ma questo non funziona se si inserisce un :) senza niente prima di esso.
+1 per i limiti delle parole - ma nel caso di 'http: // www' non sarebbe 'http' una parola, e'/'un limite di parola, quindi':/'verrebbe comunque filtrato? – Tim
in realtà, lo prendo indietro - +1 per ['preg_quote'] (http://php.net/preg_quote), è fantastico! – Tim
Così ho messo questo nella mia funzione invece di usare 'strtr()'? ** Modifica: ** Hmm, per qualche motivo nessuna icona viene trasformata in immagini ora. Mi chiedo se c'è un modo per non far diventare le emoticon di testo trasformate in immagini in caselle di codice? – Nathan