/ 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
ereg_replace med NOT (!)
Fra : Kasper Birch Olsen


Dato : 28-07-03 13:14

hej

jeg sidder og roder med et lille problem. Jeg vil gerne løbe igennem en
streng og erstatte alle tegn der IKKE matcher et mønster med "#". Den
kode der erstatter alle tegn der MATCHER ser sådan her ud:

$string ereg_replace ('[a-zA-ZæøåÆØÅ]','#',$string);

men det jeg gerne vil er at erstatte alle de andre tegn med "#". Jeg her
prøvet at putte et "!" tegn ind sådan lidt rundt omkring, men jeg kan
ikke rigtigt få det til at virke. Heller ikke på php.net kan jeg rigtigt
finde noget der kan bruges.

altså: ab12@ skal blive til ab### men det bedste jeg kan klare lige nu
er ##12@

- Kasper


 
 
Peter Brodersen (28-07-2003)
Kommentar
Fra : Peter Brodersen


Dato : 28-07-03 16:04

On Mon, 28 Jul 2003 14:14:13 +0200, Kasper Birch Olsen <nospam@fb.dk>
wrote:

>$string ereg_replace ('[a-zA-ZæøåÆØÅ]','#',$string);
>
>men det jeg gerne vil er at erstatte alle de andre tegn med "#". Jeg her
>prøvet at putte et "!" tegn ind sådan lidt rundt omkring, men jeg kan
>ikke rigtigt få det til at virke.

! skal kun bruges ved logiske sammenligninger. Her er det regulære
udtryks egne koder, der skal bruges.

Løsningen er at sætte et ^ i starten af en klasse, fx:

ereg_replace ('[^a-zA-ZæøåÆØÅ]','#',$string);

--
- Peter Brodersen

Ugens sprogtip: kutyme (og ikke kotume)

Kasper Birch Olsen (29-07-2003)
Kommentar
Fra : Kasper Birch Olsen


Dato : 29-07-03 09:31

Peter Brodersen wrote:
> On Mon, 28 Jul 2003 14:14:13 +0200, Kasper Birch Olsen <nospam@fb.dk>
> wrote:
>
>
>>$string ereg_replace ('[a-zA-ZæøåÆØÅ]','#',$string);
>>
>>men det jeg gerne vil er at erstatte alle de andre tegn med "#". Jeg her
>>prøvet at putte et "!" tegn ind sådan lidt rundt omkring, men jeg kan
>>ikke rigtigt få det til at virke.
>
>
> ! skal kun bruges ved logiske sammenligninger. Her er det regulære
> udtryks egne koder, der skal bruges.
>
> Løsningen er at sætte et ^ i starten af en klasse, fx:
>
> ereg_replace ('[^a-zA-ZæøåÆØÅ]','#',$string);
>
tak!


Thomas Finnerup (29-07-2003)
Kommentar
Fra : Thomas Finnerup


Dato : 29-07-03 11:39

On Tue, 29 Jul 2003 10:31:03 +0200, Kasper Birch Olsen <nospam@fb.dk>
wrote:

> > ereg_replace ('[^a-zA-ZæøåÆØÅ]','#',$string);
>
> tak!

I øvrigt kan det anbefales at bruge

ereg_replace("[^[:alpha:]]", "#", $string);

så den også bevarer diverse accent-varianter (éöñ, osv).


Venligst
Thomas

Peter Brodersen (29-07-2003)
Kommentar
Fra : Peter Brodersen


Dato : 29-07-03 19:53

On Tue, 29 Jul 2003 12:38:41 +0200, Thomas Finnerup <TF@Picco.dk>
wrote:

>I øvrigt kan det anbefales at bruge
>
> ereg_replace("[^[:alpha:]]", "#", $string);
>
>så den også bevarer diverse accent-varianter (éöñ, osv).

Ikke her - heller ikke selvom jeg sætter en passende setlocale().

I det hele taget må jeg i skam erkende, at jeg er gået lidt væk fra at
bruge locale-oplysninger i diverse projekter. Der er simpelthen for
meget bøvl med udbydere, der ved PHP-installationer på bestemte
platforme ikke lige har relevante locales liggende, og så fremdeles...

--
- Peter Brodersen

Ugens sprogtip: kutyme (og ikke kotume)

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste