En este momento estoy usando esta función de emoticonos:¿Una mejor manera de reemplazar emoticones en 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);
}
Pero si se introduce un enlace de la parte :/
de http://
es reemplazado:
mismo con código (4 espacios en el frente de cada línea para crear el cuadro de código), pero por alguna razón un simple )
se reemplaza (con un guiño) también:
¿Hay una mejor solución para esto que reemplazar todos los iconos como este? Obviamente no funciona bien. He buscado mucho en Google y no he encontrado una forma mejor. También traté de poner un espacio antes de cada emoticón en el conjunto asociativo anterior, pero eso no funciona si simplemente ingresas un :) sin nada antes.
+1 para límites de palabras - pero en el caso de 'http: // www' no 'http' sería una palabra, y'/'un límite de palabras, por lo que':/'todavía se filtraría? – Tim
en realidad, lo tomo de vuelta - +1 para ['preg_quote'] (http://php.net/preg_quote), ¡eso es increíble! – Tim
Entonces puse esto en mi función en lugar de usar 'strtr()'? ** Editar: ** Hmm, por alguna razón, ningún ícono se está convirtiendo en imágenes ahora. Me pregunto si hay alguna forma de que los emoticones de texto no se conviertan en imágenes en cuadros de códigos. – Nathan