/ 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
Formatere streng til bogstaverne a-z
Fra : Christoffer Kjeldgaa~


Dato : 22-01-05 19:07

Hejsa,

Jeg har nogle brugerinputs på min hjemmeside, som jeg godt kunne
tænke mig at formatere til kun at indeholde tegn fra a til z samt
bindestreger mellem ord. Altså på en sådan måde at en steng som
følgende:

"Jens var ude med sin kælk i snevejret"

bliver til:

"jens-var-ude-med-sin-kaelk-snevejret"

uden nogle specialtegn, danske bogstaver og hvad man ellers kunne
finde på. Jeg har kigget lidt på str_replace(), preg_replace() og
ereg(), men har ikke fundet nogen skudsikker løsning. Hvordan kan
jeg nemmest få løst mit problem?

Med venlig hilsen,
Christoffer Kjeldgaard

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Arnulf Sortland (22-01-2005)
Kommentar
Fra : Arnulf Sortland


Dato : 22-01-05 19:12

Christoffer Kjeldgaard skrev:
> Hejsa,
>
> Jeg har nogle brugerinputs på min hjemmeside, som jeg godt kunne
> tænke mig at formatere til kun at indeholde tegn fra a til z samt
> bindestreger mellem ord. Altså på en sådan måde at en steng som
> følgende:
>
> "Jens var ude med sin kælk i snevejret"
>
> bliver til:
>
> "jens-var-ude-med-sin-kaelk-snevejret"
>
> uden nogle specialtegn, danske bogstaver og hvad man ellers kunne
> finde på. Jeg har kigget lidt på str_replace(), preg_replace() og
> ereg(), men har ikke fundet nogen skudsikker løsning. Hvordan kan
> jeg nemmest få løst mit problem?
>
> Med venlig hilsen,
> Christoffer Kjeldgaard

Hva med: http://dk.php.net/str_replace

arnulf @ http://rlb.no/

Benny Nissen (22-01-2005)
Kommentar
Fra : Benny Nissen


Dato : 22-01-05 19:14

Christoffer Kjeldgaard used his keyboard to write :
> "Jens var ude med sin kælk i snevejret"
>
> bliver til:
>
> "jens-var-ude-med-sin-kaelk-snevejret"
>
> uden nogle specialtegn, danske bogstaver og hvad man ellers kunne
> finde på. Jeg har kigget lidt på str_replace(), preg_replace() og
> ereg(), men har ikke fundet nogen skudsikker løsning. Hvordan kan
> jeg nemmest få løst mit problem?

Du kan da sagtens lave det med en håndfuld str_replace, men det bliver
ikke vildt smukt:

$mystring = str_replace("æ", "ae" ,$mystring);
$mystring = str_replace("ø", "oe" ,$mystring);
$mystring = str_replace("å", "aa" ,$mystring);
$mystring = str_replace(" ", "-" ,$mystring);

o.s.v.

--
Benny


Christoffer Kjeldgaa~ (22-01-2005)
Kommentar
Fra : Christoffer Kjeldgaa~


Dato : 22-01-05 19:18

Benny Nissen skrev:
> Du kan da sagtens lave det med en håndfuld str_replace, men det bliver
> ikke vildt smukt:
>
> $mystring = str_replace("æ", "ae" ,$mystring);
> $mystring = str_replace("ø", "oe" ,$mystring);
> $mystring = str_replace("å", "aa" ,$mystring);
> $mystring = str_replace(" ", "-" ,$mystring);

Det var også noget i den stil jeg havde tænkt mig, men så har problemet
været at der hele tiden har været et eller andet specialtegn jeg ikke har
fået med. Derfor tænkte jeg at det var en mulighed "at gå den anden vej
omkring" og sige, at det kun er nogle bestemte tegn der må optræde i
strengen. Men hvis det er den eneste mulighed der er, må jeg jo bare lave
det med str_replace.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jacob Atzen (23-01-2005)
Kommentar
Fra : Jacob Atzen


Dato : 23-01-05 00:28

On 2005-01-22, Christoffer Kjeldgaard <christoffer@sappy.dk> wrote:
> Det var også noget i den stil jeg havde tænkt mig, men så har problemet
> været at der hele tiden har været et eller andet specialtegn jeg ikke har
> fået med. Derfor tænkte jeg at det var en mulighed "at gå den anden vej
> omkring" og sige, at det kun er nogle bestemte tegn der må optræde i
> strengen.

Du kan bruge preg_match() og venner til at sikre dig, at kun tilladte
tegn forekommer i strengen. F.eks:

$goodString = 'hello-world';
if(preg_match('|^[a-z\-]*$|', $goodString)) {
   echo "Good string matches\n";
}

$badString = 'hello-world!';
if(!preg_match('|^[a-z\-]*$|', $badString)) {
   echo "Bad string does not match\n";
}

--
Med venlig hilsen
- Jacob Atzen

Arnulf Sortland (22-01-2005)
Kommentar
Fra : Arnulf Sortland


Dato : 22-01-05 19:20

Benny Nissen skrev:
> Christoffer Kjeldgaard used his keyboard to write :
>
>> "Jens var ude med sin kælk i snevejret"
>>
>> bliver til:
>>
>> "jens-var-ude-med-sin-kaelk-snevejret"
>>
>> uden nogle specialtegn, danske bogstaver og hvad man ellers kunne
>> finde på. Jeg har kigget lidt på str_replace(), preg_replace() og
>> ereg(), men har ikke fundet nogen skudsikker løsning. Hvordan kan
>> jeg nemmest få løst mit problem?
>
>
> Du kan da sagtens lave det med en håndfuld str_replace, men det bliver
> ikke vildt smukt:
>
> $mystring = str_replace("æ", "ae" ,$mystring);
> $mystring = str_replace("ø", "oe" ,$mystring);
> $mystring = str_replace("å", "aa" ,$mystring);
> $mystring = str_replace(" ", "-" ,$mystring);
>
> o.s.v.

eller:
$phrase ='Jens var ude med sin kælk i snevejret';
$search = array(' ', 'æ', 'ø', ...
$replace= array('-','ae','oe', ...
print str_replace($search, $replace, $phrase);

arnulf @ http://rlb.no/

Benny Nissen (22-01-2005)
Kommentar
Fra : Benny Nissen


Dato : 22-01-05 19:40

Benny Nissen submitted this idea :
> Du kan da sagtens lave det med en håndfuld str_replace, men det bliver ikke
> vildt smukt:
>
> $mystring = str_replace("æ", "ae" ,$mystring);
> $mystring = str_replace("ø", "oe" ,$mystring);
> $mystring = str_replace("å", "aa" ,$mystring);
> $mystring = str_replace(" ", "-" ,$mystring);

.... og som sædvanligt har php allerede en mere smart funtion til det


http://dk.php.net/manual/da/function.strtr.php

--
Benny


Benny Nissen (23-01-2005)
Kommentar
Fra : Benny Nissen


Dato : 23-01-05 01:32

Christoffer Kjeldgaard explained on 22-01-2005 :

> Hvordan kan
> jeg nemmest få løst mit problem?

Ved ikke, om det er den nemmeste måde, men den virker:

<?php
   // Inddata
$mystring = "Her er både æ'er og store Ø'er og andre tegn! ... eller
hvad ?";

   // Lav oversættelsesarray; danske bogstaver og mellemrum
$trans = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø"
=> "Oe", "Å" => "Aa", " " => "-");

   // Oversæt danske tegn og mellemrum
$mystring = strtr($mystring, $trans);

   // Fjern resten; $mystring indeholderefter det ønskede
$mystring = preg_replace('|[^a-zA-Z\-]|', '', $mystring);
?>

--
Benny


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

Månedens bedste
Årets bedste
Sidste års bedste