---
title: "Samma smilie två gånger i rad"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/158139-samma-smilie-två-gånger-i-rad"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "silfver"
published: "2007-03-13T13:30:28.000Z"
updated: "2007-03-14T09:24:00.000Z"
replies: 11
views: 582
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/158139-samma-smilie-två-gånger-i-rad"
---

# Samma smilie två gånger i rad

## #1 — silfver, 2007-03-13T13:30Z

Jag har problem med smilies som inte ersätts med en bild. [Titta på den här sidan](http://www.silfver.se/arkiv/2003/03/12/smilie-problem/) så kanske du förstår vad jag menar. Skriver man samma smilie två gånger på rad så visas bara ena - konstigt nog? Så här ser min php-kod ut: 

```php
if (!isset($wpsmiliestrans)) {
	$wpsmiliestrans = array(
	' :)'	=> 'smile.gif',
	' :('	=> 'frown.gif',
	' :r'	=> 'shame.gif',
	' :e'	=> 'supergrin.gif',
	' ;)'	=> 'wink.gif',
	' :P'	=> 'tongue.gif',
	' :p'	=> 'tongue.gif',
	' :h'	=> 'cool.gif',
	' :OO'	=> 'look.gif',
	' :oo'	=> 'look.gif',
	' x('	=> 'angry.gif',
	' :o'	=> 'redface.gif',
	' :O'	=> 'redface.gif',
	' :q'	=> 'quest.gif',
	' :birp'	=> 'beergrin.gif',
	' :D'	=> 'supergrin.gif',
	' :bire'	=> 'bire.gif',
	' :x'	=> 'dead.gif',
	' :dev'	=> 'devel.gif',
	' :dev2'	=> 'devilgrin.gif',
	' :f'	=> 'flirt.gif',
	' :l'	=> 'hrmpf.gif',
	' :i'	=> 'idea.gif',
	' :stud'	=> 'stud.gif',
	' :moose'	=> 'moose.gif',
	' :L'	=> 'laugh.gif',
	' :bla'	=> 'jaja.gif',
	' (y)'	=> 'yes.gif',
	' (n)'	=> 'no.gif',
	);
}
// generates smilies' search & replace arrays
foreach ( (array) $wpsmiliestrans as $smiley => $img ) {
	$wp_smiliessearch[] = '/(\s|^)'.preg_quote($smiley, '/').'(\s|$)/';
	$smiley_masked = htmlspecialchars(trim($smiley), ENT_QUOTES);
	$wp_smiliesreplace[] = " <img src='" . get_option('siteurl') . "/wp-includes/images/smilies2/$img' alt='$smiley_masked' class='wp-smiley' /> ";
}
```

 Vad är det som är fel? Tar jag bort mellanrummen så att det blir ':)' osv. så fungerar det inte alls.

Tack wF för gubbarna. ;)

Permalänk: https://www.webforum.nu/p/158139

## #2 — silfver, 2007-03-13T21:17Z

Ingen? Kom igen, jag vet ju att wF är fullt av php-gurus. :)

Permalänk: https://www.webforum.nu/p/1945071

## #3 — Danne V, 2007-03-13T21:32Z

Jag är absolut ingen php-guru. Ingen guru alls förresten. Men vad händer om du tar space både före och efter:

```
' :) '
```

EDIT; HAHAHA....det syns ingen kod, för det bidde en riktig smiley. :)
Men du hajar ändå va?

Permalänk: https://www.webforum.nu/p/1945075

## #4 — silfver, 2007-03-13T21:38Z

> **Danne V skrev:**
>
> Jag är absolut ingen php-guru. Ingen guru alls förresten. Men vad händer om du tar space både före och efter:
> 
>
>
> ```
> ' :) '
> ```
>
> 
> 
> EDIT; HAHAHA....det syns ingen kod, för det bidde en riktig smiley. :)
> Men du hajar ändå va?

Ska pröva! :) Värt ett försök i alla fall... Men då krävs det att det är ett mellanslag efter alla smilies, vilket inte borde behövas...

Man kan klicka i "Stäng av smilies i texten"...

**r\\** Nej, men strunt samma. Så vill jag ju inte ha det. Jag vill att det ska vara ett mellanslag innan, inget efter...

Fler förslag?

Permalänk: https://www.webforum.nu/p/1945077

## #5 — Danne V, 2007-03-13T21:42Z

> **silfver skrev:**
>
> Men då krävs det att det är ett mellanslag efter alla smilies, vilket inte borde behövas..

.
Njaeee...eftersom du har ett mellanslag i början i koden där smileyn "defineras", så måste det ju vara ett mellanslag även när folk ska lägga in smileyn i det dom skriver, eller hur? Typ... kanske......

> **silfver skrev:**
>
> Man kan klicka i "Stäng av smilies i texten"...

Doh!

Permalänk: https://www.webforum.nu/p/1945080

## #6 — Danne V, 2007-03-13T21:47Z

Varför funkar det inte om du tar bort mellanslagen helt? Jag menar: Ett mellanslag är ju som vilket tecken som helst egentligen. Skriver du att det ska bli en gubbe om nån skriver "ABC", så blir det väl det? Om du nu inte skriver "fel" när du testar och "glömmer" eller lägger till ett mellanslag?

Förresten... jag är nog för trött för det här. Men jag lovar att jag med stort intresse kommer att kolla in den här tråden direkt imorron bitti för att se om det löst sig. :)

Permalänk: https://www.webforum.nu/p/1947903

## #7 — emission, 2007-03-13T21:50Z

Men du visar inte all kod. Själva ersättningen är inte med... (anar förvisso hur den ser ut)

Själva sökmönstret gör dock att man inte kan skriva :):), men väl :) :)

Ta bort mellanslagen i strängarna och byt till

```
$wp_smiliessearch[] = '/'.preg_quote($smiley, '/').'/';
```

Permalänk: https://www.webforum.nu/p/1947904

## #8 — silfver, 2007-03-13T21:58Z

> **emission skrev:**
>
> Men du visar inte all kod. Själva ersättningen är inte med...

Oj, inte? Jag visade all kod som var relevant i filen... ska kolla de andra.

Sen märkte jag precis en lustig sak. Det visade sig att jag i min fil inte hade några mellanslag, utan där såg det ut så här ':)'. Och ersätter jag min array med den jag postade så syns inte smilies över huvud taget. Kolla [sidan igen](http://www.silfver.se/arkiv/2003/03/12/smilie-problem/). Nu är array så som i första inlägget.

Permalänk: https://www.webforum.nu/p/1947909

## #9 — emission, 2007-03-13T21:59Z

Har redigerat mitt föregående inlägg. Prova det som står där.

Permalänk: https://www.webforum.nu/p/1947910

## #10 — silfver, 2007-03-13T22:15Z

> **emission skrev:**
>
> Har redigerat mitt föregående inlägg. Prova det som står där.

Det fungerar! Tack! :) Men när jag gör en :OO så blir det en smilie *plus* följande:  O' class='wp-smiley' /\> Varför kan inte den smilien se ut så? Så här blir html: 

```
<img src='http://www.silfver.se/wp-includes/images/smilies2/look.gif' alt=' <img src='http://www.silfver.se/wp-includes/images/smilies2/redface.gif' alt=':O' class='wp-smiley' /> O' class='wp-smiley' />
```

Permalänk: https://www.webforum.nu/p/1947917

## #11 — emission, 2007-03-13T23:38Z

Det beror på alt-texten, som helt plötsligt matchar, eftersom vi inte längre kräver mellanslag (el. annan brytning) kring smileyn. 

:OO blir en bild med :OO i alt-texten, som sedan matchas som en :O. 

Du skulle kunna prova något i stil med (har inte php:at på mycket länge, så jag kan mycket väl vara ute och cykla)

```
$wpsmiliestrans = array(
    ':)'    => array('smile.gif','Smile'),
    ':('    => array('frown.gif','Frown'),
```

och 

```
smilies2/$img[0]' alt='$img[1]' class
```

Permalänk: https://www.webforum.nu/p/1947931

## #12 — silfver, 2007-03-14T09:24Z

Tack för hjälpen emission! Jag bytte ut  :OO  mot en nolla i stället så slapp jag mer pill i originalkoden. Tack återigen!

Permalänk: https://www.webforum.nu/p/1947971

---

Tråden på webben: https://www.webforum.nu/amne/php/158139-samma-smilie-två-gånger-i-rad
