/ 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
Filtrering af ulovlige karakterer i streng
Fra : Tommy Ipsen


Dato : 03-03-05 18:56

Hej

Input:
En tekststreng der kan indeholde alle mulige karakterer

Output:
En tekststreng der indeholder de lovlige karakterer fra inputtet - dvs.
eksempelvis a-z, A-z, 0-9, _ og (mellemrum)

Metode:
?

Det må da siges at være en kort og præcis problemformulering Kan det
lade sig gøre, at bruge en af regexp-funktionerne til denne filtrering?

Mvh Tommy

 
 
Peter Brodersen (03-03-2005)
Kommentar
Fra : Peter Brodersen


Dato : 03-03-05 18:59

On 3 Mar 2005 18:55:51 +0100, Tommy Ipsen <tipsen@imada.sdu.dk> wrote:

>Det må da siges at være en kort og præcis problemformulering Kan det
>lade sig gøre, at bruge en af regexp-funktionerne til denne filtrering?

Fin problemformulering.

For det aktuelle eksempel:
$string = preg_replace('/[^a-zA-Z0-9_ ]/','',$string);

--
- Peter Brodersen

Tommy Ipsen (03-03-2005)
Kommentar
Fra : Tommy Ipsen


Dato : 03-03-05 20:26

Peter Brodersen wrote:

> For det aktuelle eksempel:
> $string = preg_replace('/[^a-zA-Z0-9_ ]/','',$string);

Sweet

//fjern alt andet end bogstaver ("words") og tal
$Soegeord = preg_replace('/[^\w\d]/', ' ', $Soegeord);
//lav 2 eller flere whitespaces om til ét mellemrum
$Soegeord = preg_replace('/\s\s+/', ' ', $Soegeord);

Ser du nogen problemer i ovenstående - det er tiltænkt som en filtrering
af de søgeord en bruger kan komme med!

Mvh Tommy

Peter Brodersen (03-03-2005)
Kommentar
Fra : Peter Brodersen


Dato : 03-03-05 20:51

On 3 Mar 2005 20:26:20 +0100, Tommy Ipsen <tipsen@imada.sdu.dk> wrote:

>//fjern alt andet end bogstaver ("words") og tal
>$Soegeord = preg_replace('/[^\w\d]/', ' ', $Soegeord);
>//lav 2 eller flere whitespaces om til ét mellemrum
>$Soegeord = preg_replace('/\s\s+/', ' ', $Soegeord);
>
>Ser du nogen problemer i ovenstående - det er tiltænkt som en filtrering
>af de søgeord en bruger kan komme med!

Næeh, ikke ud over at efter den første preg_replace har du alligevel
kun mellemrum af whitespaces. Du kan måske nøjes med:

$Soegeord = preg_replace('/[^\w\d]+/', ' ', $Soegeord);

... så bliver alle ikke-ord/tal i træk (plusset betyder ét eller flere)
alligevel lavet om til ét mellemrum.

Derudover kan du fjerne \d, for:
http://www.php.net/manual/en/reference.pcre.pattern.syntax.php
A "word" character is any letter or digit or the underscore character,
that is, any character which can be part of a Perl "word".

Så du kan evt. bare have følgende:
$Soegeord = preg_replace('/[^\w]+/', ' ', $Soegeord);

--
- Peter Brodersen

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

Månedens bedste
Årets bedste
Sidste års bedste