Avatar billede cmau Nybegynder
11. maj 2005 - 20:17 Der er 22 kommentarer og
1 løsning

Fejl i eregi_replace

Nogle der kan finde fejlene i mit script?

Fejl:

Warning: eregi_replace(): REG_EPAREN in /mnt/raid/www/www/babegalleri/test/function_smilies.php on line 4

Warning: eregi_replace(): REG_EMPTY in /mnt/raid/www/www/babegalleri/test/function_smilies.php on line 7

Warning: eregi_replace(): REG_EPAREN in /mnt/raid/www/www/babegalleri/test/function_smilies.php on line 13

<?
$description = eregi_replace(':D','<img src="images/smilies/1.gif" alt=":D">',$description);
$description = eregi_replace('8D','<img src="images/smilies/2.gif" alt="8D">',$description);
$description = eregi_replace(':\'(','<img src="images/smilies/3.gif" alt=":\'(">',$description);
$description = eregi_replace(':ups:','<img src="images/smilies/4.gif" alt=":ups:">',$description);
$description = eregi_replace(':P','<img src="images/smilies/5.gif" alt=":P">',$description);
$description = eregi_replace(':|','<img src="images/smilies/6.gif" alt=":|">',$description);
$description = eregi_replace(':)','<img src="images/smilies7/.gif" alt=":)">',$description);
$description = eregi_replace(':woot:','<img src="images/smilies/8.gif" alt=":woot:">',$description);
$description = eregi_replace(':evil:','<img src="images/smilies/9.gif" alt=":evil:">',$description);
$description = eregi_replace(':arrow:','<img src="images/smilies/10.gif" alt=":arrow:">',$description);
$description = eregi_replace(':!:','<img src="images/smilies/11.gif" alt=":!:">',$description);
$description = eregi_replace(':(','<img src="images/smilies/12.gif" alt=":(">',$description);
$description = eregi_replace(':idea:','<img src="images/smilies/13.gif" alt=":idea:">',$description);
$description = eregi_replace(':?:','<img src="images/smilies/14.gif" alt=":?:">',$description);
$description = eregi_replace(':lol:','<img src="images/smilies/15.gif" alt=":lol:">',$description);
$description = eregi_replace(':O','<img src="images/smilies/16.gif" alt=":O">',$description);
$description = eregi_replace(':X','<img src="images/smilies/17.gif" alt=":X">',$description);
$description = eregi_replace(':S','<img src="images/smilies/18.gif" alt=":S">',$description);
?>
Avatar billede erikjacobsen Ekspert
11. maj 2005 - 21:14 #1
Sæt en \ foran parenteserner i udtrykket,
Avatar billede cmau Nybegynder
11. maj 2005 - 21:22 #2
Nu ser min kode sådan her ud:

<?
$description = eregi_replace(':D','<img src="images/smilies/1.gif" alt="">',$description);
$description = eregi_replace('8D','<img src="images/smilies/2.gif" alt="">',$description);
$description = eregi_replace(':\'\(','<img src="images/smilies/3.gif" alt="">',$description);
$description = eregi_replace(':ups:','<img src="images/smilies/4.gif" alt="">',$description);
$description = eregi_replace(':P','<img src="images/smilies/5.gif" alt="">',$description);
$description = eregi_replace(':\|','<img src="images/smilies/6.gif" alt="">',$description);
$description = eregi_replace(':\)','<img src="images/smilies/7.gif" alt="">',$description);
$description = eregi_replace(':woot:','<img src="images/smilies/8.gif" alt="">',$description);
$description = eregi_replace(':evil:','<img src="images/smilies/9.gif" alt="">',$description);
$description = eregi_replace(':arrow:','<img src="images/smilies/10.gif" alt="">',$description);
$description = eregi_replace(':!:','<img src="images/smilies/11.gif" alt="">',$description);
$description = eregi_replace(':\(','<img src="images/smilies/12.gif" alt="">',$description);
$description = eregi_replace(':idea:','<img src="images/smilies/13.gif" alt="">',$description);
$description = eregi_replace(':?:','<img src="images/smilies/14.gif" alt="">',$description);
$description = eregi_replace(':lol:','<img src="images/smilies/15.gif" alt="">',$description);
$description = eregi_replace(':O','<img src="images/smilies/16.gif" alt="">',$description);
$description = eregi_replace(':X','<img src="images/smilies/17.gif" alt="">',$description);
$description = eregi_replace(':S','<img src="images/smilies/18.gif" alt="">',$description);
?>

Men den giver i html koden:

<img src="images/smilies/1.gif" alt="">  8)  <img src="images/smilies/3.gif" alt="">  <img src="images/smilies/4.gif" alt="">  <img src="images/smilies/5.gif" alt="">  <img src="images/smilies/6.gif" alt="">  <img src="images/smilies/7.gif" alt="">  <img src="images/smilies/8.gif" alt="">  <img src="images/smilies/9.gif" alt="">  <img src="images/smilies/10.gif" alt="">  <img src="images/smilies/11.gif" alt="">  <img src="images/smilies/12.gif" alt="">  <img src="images/smilies/13.gif" alt="">  <img src="images/smilies/14.gif" alt="">?<img src="images/smilies/14.gif" alt="">  <img src="images/smilies/14.gif" alt="">lol<img src="images/smilies/14.gif" alt="">  <img src="images/smilies/14.gif" alt="">O  <img src="images/smilies/14.gif" alt="">X  <img src="images/smilies/14.gif" alt="">S

Hvis jeg i databasen har:
:D  8)  :'(  :ups:  :P  :|  :)  :woot:  :evil:  :arrow:  :!:  :(  :idea:  :?:  :lol:  :O  :X  :S
Avatar billede cmau Nybegynder
11. maj 2005 - 21:27 #3
http://www.babegalleri.dk/test/?open=main.php?page=toplists

Hvis du ruller ned til nr. 9 og ser, så efter ?-billedet, så bliver den bar eved med at lave ?-billeder. Hvad er fejlen?
Avatar billede erikjacobsen Ekspert
11. maj 2005 - 21:29 #4
Ja, også en \ foran spørgsmålstegn. Det skal foran alle magiske tegn

De steder hvor du ikke har bogstaver, og ikke skal udnytte "i"-et i eregi_... kan du
med fordel bruge str_replace. Det er hurtigere.  Skal det slet ikke være case-insensitivt kan du gøre noget, der endda er endnu hurtigere... ;)
Avatar billede cmau Nybegynder
11. maj 2005 - 21:31 #5
Ville du prøve at ændre det, så det blev hurtigere?

Koden, med flere ændreingere:

<?
$description = eregi_replace(":D",'<img src="images/smilies/1.gif" alt="">',$description);
$description = eregi_replace("8)",'<img src="images/smilies/2.gif" alt="">',$description);
$description = eregi_replace(":'\(",'<img src="images/smilies/3.gif" alt="">',$description);
$description = eregi_replace(":ups:",'<img src="images/smilies/4.gif" alt="">',$description);
$description = eregi_replace(":P",'<img src="images/smilies/5.gif" alt="">',$description);
$description = eregi_replace(":\|",'<img src="images/smilies/6.gif" alt="">',$description);
$description = eregi_replace(":\)",'<img src="images/smilies/7.gif" alt="">',$description);
$description = eregi_replace(":woot:",'<img src="images/smilies/8.gif" alt="">',$description);
$description = eregi_replace(":evil:",'<img src="images/smilies/9.gif" alt="">',$description);
$description = eregi_replace(":arrow:",'<img src="images/smilies/10.gif" alt="">',$description);
$description = eregi_replace(":!:",'<img src="images/smilies/11.gif" alt="">',$description);
$description = eregi_replace(":\(",'<img src="images/smilies/12.gif" alt="">',$description);
$description = eregi_replace(":idea:",'<img src="images/smilies/13.gif" alt="">',$description);
$description = eregi_replace(":\?:",'<img src="images/smilies/14.gif" alt="">',$description);
$description = eregi_replace(":lol:",'<img src="images/smilies/15.gif" alt="">',$description);
$description = eregi_replace(":O",'<img src="images/smilies/16.gif" alt="">',$description);
$description = eregi_replace(":X",'<img src="images/smilies/17.gif" alt="">',$description);
$description = eregi_replace(":S",'<img src="images/smilies/18.gif" alt="">',$description);
?>
Avatar billede erikjacobsen Ekspert
11. maj 2005 - 21:51 #6
men så bliver :idea: ok men :IDEA: ikke - er det hvad du vil?
Avatar billede cmau Nybegynder
11. maj 2005 - 22:05 #7
Bare :p :P :D :d :O :o :X :x :S :s virker
Avatar billede erikjacobsen Ekspert
11. maj 2005 - 22:42 #8
Der er flere forslag i http://eksperten.dk/spm/444801  - både strtr og str_replace
Avatar billede cmau Nybegynder
12. maj 2005 - 07:42 #9
Hmm får ikke rigtig noget ud af det, da det er en kryterings sprog.

Har ikke selt forstået str_replace, skal jeg så lave en linje for :O og en for :o og virker tal eller hvad er det du har snakket om?
Avatar billede cmau Nybegynder
16. maj 2005 - 14:10 #10
hu?
Avatar billede erikjacobsen Ekspert
16. maj 2005 - 22:08 #11
"en kryterings sprog" - hvad betyder det? Og hvad har du lavet?
Avatar billede cmau Nybegynder
16. maj 2005 - 22:33 #12
Hehe ved jeg entlig heller ikke :)

Måske noget med at det du linker til at en krypterings maskine de laver.

Vil du ikke prøve at bruge str_replace og eregi_replace hvor det skal være også poste det?
Avatar billede cmau Nybegynder
19. maj 2005 - 15:08 #13
?
Avatar billede cmau Nybegynder
22. maj 2005 - 17:22 #14
kunne du ikke hjælpe?
Avatar billede erikjacobsen Ekspert
22. maj 2005 - 17:35 #15
Joh, men det hele står jo i spørgsmålet, der refereres til. Hvad er problemet?
Avatar billede cmau Nybegynder
22. maj 2005 - 21:17 #16
Har bare ikke forstået noget. Er str_replace hurtigere?

Tager den både X og x under bare x som eregi_replace gør?

Kan den tage tal? Og tegn?
Avatar billede erikjacobsen Ekspert
23. maj 2005 - 09:18 #17
Der er forskel på x og X, så du skal have begge med. Den er hurtigere end eregi_replace, men særlig hurtig når du har mange ting, der skal erstattes: du laver
et array med alle erstatninger, og kalder str_replace (eller strtr) een gang.

I PHP5 er der en stri_replace hvor der ikke er forskel på x og X.
Avatar billede cmau Nybegynder
23. maj 2005 - 16:45 #18
Har desværre kun PHP Version 4.3.8-9 - http://babegalleri.dk/php.php

Men det med et array, jeg er rigtig dårlig til dem. Og hvordan de skal få 2 værdier (tegn og url til pic) er mig en stor gåde. Kan du fx lave et eksempel?

Str kan den også tage tal?
Avatar billede cmau Nybegynder
29. maj 2005 - 19:22 #19
.?
Avatar billede erikjacobsen Ekspert
30. maj 2005 - 23:34 #20
Jeg er slet ikke sikker på hvad det er du spørger om. Det hele står i det andet spørgsmål jeg linkede til, og du må have lavet noget i retning af dette (jeg har
kun taget 3 med):

$a[':arrow:']='<img src="images/smilies/10.gif" alt=":arrow:">';
$a[':!:']    ='<img src="images/smilies/11.gif" alt=":!:">';
$a[':(']    ='<img src="images/smilies/12.gif" alt=":(">';

$description=strtr($description,$a);

Men hvad er problemet?
Avatar billede cmau Nybegynder
30. juli 2005 - 20:55 #21
Smid lige svar.
Avatar billede erikjacobsen Ekspert
30. juli 2005 - 20:56 #22
Jeg samler slet ikke på point, tak.
Avatar billede cmau Nybegynder
27. september 2005 - 22:25 #23
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester