/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
eregi_replace problem med danske specialte~
Fra : Henrik Olsen


Dato : 13-11-01 14:24

Nedenstående eksempel illusterer problemet.

$str = "En Historie kan være det rene Øregas for nogle, øl for andre.<br>";
echo eregi_replace ("øregas", "erstatning", $str);
echo eregi_replace ("Øregas", "erstatning", $str);
echo eregi_replace ("historie", "erstatning", $str);
echo eregi_replace ("Historie", "erstatning", $str);

giver følgende resultat

En Historie kan være det rene Øregas for nogle, øl for andre.
En Historie kan være det rene erstatning for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.

Erstatningen er korrekt i eksempel 2,3 og 4, men ej i 1'eren. Kan nogle
hjælpe med dette?

PHP 4.06



 
 
Anders Johannsen (13-11-2001)
Kommentar
Fra : Anders Johannsen


Dato : 13-11-01 16:07

> Erstatningen er korrekt i eksempel 2,3 og 4, men ej i 1'eren. Kan nogle
> hjælpe med dette?

<?php
echo $SERVER_SOFTWARE . "\n\n";

$str = "En Historie kan være det rene Øregas for nogle, øl for andre.<br>";
echo eregi_replace ("øregas", "erstatning", $str);
echo eregi_replace ("Øregas", "erstatning", $str);
echo eregi_replace ("historie", "erstatning", $str);
echo eregi_replace ("Historie", "erstatning", $str);

?>

giver

Apache/1.3.20 (Unix) (Red-Hat/Linux) Resin/1.2.2 PHP/4.0.6

En Historie kan være det rene erstatning for nogle, øl for andre.
En Historie kan være det rene erstatning for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.

/A



Henrik Olsen (14-11-2001)
Kommentar
Fra : Henrik Olsen


Dato : 14-11-01 12:23


"Anders Johannsen" <anders@ignition.dk> wrote in message
news:3bf1370c$0$238$edfadb0f@dspool01.news.tele.dk...
....
<?php
> echo $SERVER_SOFTWARE . "\n\n";
>
> $str = "En Historie kan være det rene Øregas for nogle, øl for
andre.<br>";
> echo eregi_replace ("øregas", "erstatning", $str);
> echo eregi_replace ("Øregas", "erstatning", $str);
> echo eregi_replace ("historie", "erstatning", $str);
> echo eregi_replace ("Historie", "erstatning", $str);
>
> ?>
>
> giver
>
> Apache/1.3.20 (Unix) (Red-Hat/Linux) Resin/1.2.2 PHP/4.0.6
>
> En Historie kan være det rene erstatning for nogle, øl for andre.
> En Historie kan være det rene erstatning for nogle, øl for andre.
> En erstatning kan være det rene Øregas for nogle, øl for andre.
> En erstatning kan være det rene Øregas for nogle, øl for andre.

Min giver (med echo $SERVER_SOFTWARE)

Apache/1.3.20 (Unix) PHP/3.0.18 PHP/4.0.6

En Historie kan være det rene Øregas for nogle, øl for andre.
En Historie kan være det rene erstatning for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.

Altså erstattes 1'eren ikke korrekt med Apache/1.3.20 (Unix) PHP/3.0.18
PHP/4.0.6. Nogle forslag?



Anders Johannsen (14-11-2001)
Kommentar
Fra : Anders Johannsen


Dato : 14-11-01 12:41

> Altså erstattes 1'eren ikke korrekt med Apache/1.3.20 (Unix) PHP/3.0.18
> PHP/4.0.6. Nogle forslag?

Bruger du så 3.0.18 eller 4.0.6?

/A



Henrik Olsen (14-11-2001)
Kommentar
Fra : Henrik Olsen


Dato : 14-11-01 15:14

"Anders Johannsen" <anders@ignition.dk> wrote in message
news:3bf25838$0$269$edfadb0f@dspool01.news.tele.dk...
....
> Bruger du så 3.0.18 eller 4.0.6?

Ja, det slog mig også. Men jeg prøvede at omdøbe testfilen til .php4 for at
være sikker på fortolkning af 4.06'eren, og det var samme problem. Vil se på
locales-opsætningen i PHP nu.




Kim Emax - ayianapa.~ (15-11-2001)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 15-11-01 23:05


"Henrik Olsen" <ho_maps@hotmail.com> skrev

> Ja, det slog mig også. Men jeg prøvede at omdøbe testfilen til .php4 for
at
> være sikker på fortolkning af 4.06'eren, og det var samme problem. Vil se

> locales-opsætningen i PHP nu.

spændende.... vender du lige tilbage med løsningen? (og grunden til fejlen


--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
http://www.artificial-dreams.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks mest avancerede VinWebShop





Henrik Olsen (20-11-2001)
Kommentar
Fra : Henrik Olsen


Dato : 20-11-01 10:00

"Kim Emax - ayianapa.dk" <newsgroup@sletdette-ayianapa.dk> wrote in message
news:VZWI7.3054$Bs1.589855@news000.worldonline.dk...
....
> spændende.... vender du lige tilbage med løsningen? (og grunden til fejlen
>

Nej, vender desværre ikke tilbage med løsningen, eller forklaringen. Vil
blot fortælle at jeg har prøvet at indsætte en setlocale("LC_ALL","danish"),
og at det ikke hjalp.



Troels Arvin (20-11-2001)
Kommentar
Fra : Troels Arvin


Dato : 20-11-01 16:12

On Tue, 20 Nov 2001 10:00:25 +0100, "Henrik Olsen" <ho_maps@hotmail.com>
wrote:

> setlocale("LC_ALL","danish"), og at det ikke hjalp.

Det skal være

$previous_LC_ALL=setlocale("LC_ALL","da_DK");

(Det kan være rart at gemme, hvad den tidl. locale var, således at man
kan reetablere den længere henne i koden, hvis det bliver nødvendigt.)

--
Greetings from Troels Arvin, Copenhagen, Denmark

Henrik Olsen (22-11-2001)
Kommentar
Fra : Henrik Olsen


Dato : 22-11-01 13:09


"Troels Arvin" <troels@arvin.dk> wrote in message
news:9tdru1$a0r$1@sunsite.dk...
> On Tue, 20 Nov 2001 10:00:25 +0100, "Henrik Olsen" <ho_maps@hotmail.com>
> wrote:
....
> $previous_LC_ALL=setlocale("LC_ALL","da_DK");

Virker desværre stadigt ikke. Måske en decideret bug i PHP's
eregi_replace(?)



Niels Andersen (14-11-2001)
Kommentar
Fra : Niels Andersen


Dato : 14-11-01 13:47

"Henrik Olsen" <ho_maps@hotmail.com> wrote in message
news:9sr70v$1bcm$1@news.cybercity.dk...
> Nedenstående eksempel illusterer problemet.
> $str = "En Historie kan være det rene Øregas for nogle, øl for
andre.<br>";
> echo eregi_replace ("øregas", "erstatning", $str);
> En Historie kan være det rene Øregas for nogle, øl for andre.

Det må være et "locale"-problem. Jeg har dog ikke sat mig tilstrækkeligt
ind i at sætte locales til at kunne hjælpe dig yderligere. :)

--
Mvh.

Niels Andersen



Troels Arvin (23-11-2001)
Kommentar
Fra : Troels Arvin


Dato : 23-11-01 11:56

On Tue, 13 Nov 2001 14:24:05 +0100, "Henrik Olsen" <ho_maps@hotmail.com>
wrote:

> Erstatningen er korrekt i eksempel 2,3 og 4, men ej i 1'eren. Kan nogle
> hjælpe med dette?
>
> PHP 4.06

Jeg har lige prøvet at reproducere problemet. Med min PHP 4.0.6 på min
Laptop's Red Hat 7.1/7.2 (det er en bastard-installation) er der ingen
problemer. Jeg har ikke rodet med locales eller lign. (og p.t. står den
til fx. LANG="en_US").

Ligesom Anders Johannsen kan jeg altså ikke reproducere problemet.

Hvilket operativsystem benytter du?

Har du prøvet, om det fungerer bedre med Perl Compatible Regular
Expressions (PHPs PCRE udvidelse):

<?php

$str = 'En Historie kan være det rene Øregas for nogle, øl for andre.<br>';

echo preg_replace('|øregas|i', 'erstatning', $str);
echo preg_replace('|Øregas|i', 'erstatning', $str);
echo preg_replace ('|historie|i', 'erstatning', $str);
echo preg_replace ('|Historie|i', 'erstatning', $str);

echo "<br>SERVER_SOFTWARE: $SERVER_SOFTWARE";

?>

--
Greetings from Troels Arvin, Copenhagen, Denmark

Henrik Olsen (27-11-2001)
Kommentar
Fra : Henrik Olsen


Dato : 27-11-01 09:44

"Troels Arvin" <troels@arvin.dk> wrote in message
news:9tla38$inq$1@sunsite.dk...
> On Tue, 13 Nov 2001 14:24:05 +0100, "Henrik Olsen" <ho_maps@hotmail.com>
> wrote:
....
> Hvilket operativsystem benytter du?

SunOS xx.xxx.dk 5.6 Generic_105181-23 sun4u sparc (fra phpinfo()).

> Har du prøvet, om det fungerer bedre med Perl Compatible Regular
> Expressions (PHPs PCRE udvidelse):
>
> <?php
>
> $str = 'En Historie kan være det rene Øregas for nogle, øl for
andre.<br>';
>
> echo preg_replace('|øregas|i', 'erstatning', $str);
> echo preg_replace('|Øregas|i', 'erstatning', $str);
> echo preg_replace ('|historie|i', 'erstatning', $str);
> echo preg_replace ('|Historie|i', 'erstatning', $str);
>
> echo "<br>SERVER_SOFTWARE: $SERVER_SOFTWARE";

giver

preg_replace:
En Historie kan være det rene Øregas for nogle, øl for andre.
En Historie kan være det rene erstatning for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.
En erstatning kan være det rene Øregas for nogle, øl for andre.

SERVER_SOFTWARE: Apache/1.3.20 (Unix) PHP/3.0.18 PHP/4.0.6

Det virker som man kan se stadigt ikke i eksempel 1. Meget frustrerende...



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste