Einen besseren Weg, Sie zu ersetzen emoticons in PHP?
Recht, jetzt bin ich mit dieser Funktion für emoticons:
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);
}
Aber wenn Sie geben Sie einen link der :/
Teil http://
wird abgelöst:
Gleiche mit code (4 Leerzeichen vor der Zeile zu erstellen, die code-box), aber aus irgendeinem Grund eine einfache )
wird ersetzt (mit einem Augenzwinkern):
Gibt es eine bessere Lösung als das ersetzen alle Symbole wie diese? Es offensichtlich nicht funktioniert gut. Ich habe in Google gesucht und viel und habe nicht gefunden, einen besseren Weg. Ich habe auch versucht, indem Sie ein Leerzeichen vor jedem emoticon-in dem assoziativen array oben, aber das funktioniert nicht, wenn Sie geben Sie einfach ein 🙂 ohne alles, bevor es.
InformationsquelleAutor Nathan | 2012-03-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die preg_replace - Funktion und verwenden Sie dann word-Grenzen im regulären Ausdruck.
Müssen Sie die Wortgrenzen und nicht weißen Raum, weil dieser kümmert sich um den start-und end-Punkte zu. Benötigen Sie ein Leerzeichen vor bedeutet, dass nur ein 🙂 nicht gefunden werden.
http
ein Wort, und/
einer word-Grenze, so dass die:/
würde noch gefiltert?tatsächlich, ich nehme das zurück - +1 für
preg_quote
, das ist genial!Also ich habe dies in meiner Funktion anstelle von
strtr()
? Edit: Hmm, aus irgendeinem Grund werden keine Symbole in Bildern jetzt. Ich Frage mich, ob es einen Weg gibt, um keine text-emoticons verwandeln sich in Bilder, in code-Boxen?Gmail chat ist es schön. Wissen Sie, ob Sie regex verwenden oder etwas anderem?
Gmail fast sicher tut es mit regulären Ausdrücken, aber Sie wahrscheinlich tun es auf der javascript-Ebene, anstatt in php dazwischen quatscht, wenn ich zu erraten. Es ist eine Sache, die du vielleicht ändern kann, um zu sehen, ob es funktioniert, statt | als das umschließende Zeichen für die regex versuchen, etwas, das nicht in einer der emoticons. Srry, dass ich änderte meine Antwort oben, um diese zu reflektieren.
InformationsquelleAutor hackartist
Reguläre Ausdrücke sind zu langsam für diese ist der text groß, so viel wie ich mag Sie, Sie sollte nur einfügen ein Symbol, wenn es von Leerzeichen umgeben, die Ihre Benutzer nicht von riot, wenn Sie versuchen zu schreiben urls.
InformationsquelleAutor AlfredoVR
Ich bin mir nicht sicher, ob es funktionieren wird oder nicht, aber ich würde versuchen, einige zusätzliche Räume wie diesen:
InformationsquelleAutor Francisco Presencia
Ich würde empfehlen, zwei Bibliotheken:
Emojify: https://github.com/HallgrenNetworks/emojify
PHP Emoji: https://github.com/iamcal/php-emoji
Diese sich mit diesen Fällen für Sie.
InformationsquelleAutor Willster
Ich denke, mit reguläre Ausdrücke statt nur die Definition Ihrer emoticons. Dies könnte so Aussehen
InformationsquelleAutor Dominik Schreiber