• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

keine "falschen" Smileys ersetzen

andy83

New member
Moin, moin,
ich habe in der Suche einige Beispiele zum Thema "Shortcuts als Smiley-Grafik ersetzen" gefunden und gelesen. Nur habe ich ein Problem mit den besagten Lösungsvorschlägen:

Code:
$beispieltext (inhaltlich Nonsens): er sagte:D
Nun würde mit dem "herkömmlichen" str_replace (":D","<img src=\"Smiley.gif\" />", $beispieltext) folgendes entstehen: er sagte<img src=\"Smiley.gif\" />

Nur, soll in dem obigen Fall KEIN Smiley "entstehen" - sondern nur bei
Code:
"er sagte :D" oder ":D"

ich habe mir schon die Finger wund gegoogled, Freunde und Bekannte gefragt, die firm sind in Sachen PHP etc, aber niemand hatte ne Idee, dieses umzusetzen.

Jetzt wende ich mich an Euch - für Vorschläge bin ich sehr dankbar

PS: im Facebook-Chat wird der Beispieltext korrekt dargestellt - also muss es ja irgendwie gehen????

DANKE!!!!
 
Zuletzt bearbeitet:
Vielleicht könntest du zum Start einfach mal Code in Code Tags setzen, denn genau darum dreht sich dein Problem und dafür sind Code Tags da.
Im Moment sieht man vor lauter Smilies keinen Code.
Und dann können wir mal weiter sehen.
 
ja, genau...
entweder das Smiley steht ganz alleine, dann ist es egal, ob Whitespaces davor oder dahinten sind
oder das Smiley steht zwischen einem Text - davor und dahinter ist mind ein Whitespace
oder eben das Smiley steht vor (Whitespace danach) einem oder hinter (Whitesapce dahinter) einem Text.... geht das?
 
Ja, kannst du mit regulären Ausdrücken machen:
z.B.:
Code:
if (preg_match('/.*\s:D.*/', "Hallo Welt :D")) {
    // HIER REPLACE
}

Ungetestet... also kann sich auch ein Flüchtigkeitsfehler eingeschlichen haben.
 
Vielen Dank schon mal...
Jetzt habe ich es so
Code:
$text="hallo welt:D";
if (preg_match('/\s:D\s/', $text)) {
    // HIER REPLACE
	$text=str_replace(":D","<img src=\"/login/chat_box/images/smileys/3.png\" alt=\"Zwinkern\" title=\"Zwinkern\"/>",$text);
}
$text=hallo welt:D //RICHTIG

$text="hallo welt :D";
if (preg_match('/\s:D\s/', $text)) {
    // HIER REPLACE
	$text=str_replace(":D","<img src=\"/login/chat_box/images/smileys/3.png\" alt=\"Zwinkern\" title=\"Zwinkern\"/>",$text);
}
$text=hallo welt :D //FALSCH - eigentlich sollte jetzt ne Grafik kommen....
 
hiermit bin ich schon ganz zufrieden:
Code:
if (preg_match('/\s:D\s/', $text) || preg_match('/:D\s/', $text) || preg_match('/\s:D/', $text)) {
    // HIER REPLACE
	$text=str_replace(":D","<img src=\"/login/chat_box/images/smileys/3.png\" alt=\"Zwinkern\" title=\"Zwinkern\"/>",$text);
}

aber eine Möglichkeit fehlt noch - nämlich wenn
Code:
:D alleine steht
ein preg_match('/:D/', $text) bringt nix, weil dann wieder IMMER ersetzt wird
 
Zurück
Oben