Avatar billede phpmanden Nybegynder
19. maj 2006 - 10:29 Der er 24 kommentarer og
2 løsninger

udvælg 3 første ord i sætning

Sådan ser det ud:

$titel = "Sodanvand til de bedste priser i hele danmark";

jeg skal bruge de jeg første ord

$ny = "sodavand-til-de";

så vil jeg gerne have det ud, altså kun de 3 første ord, alt skal være med lilleskrift og må kun indeholde tegn fra A-Z

hvordan gør jeg ?
Avatar billede jensgram Nybegynder
19. maj 2006 - 10:36 #1
preg_match("/([a-z]+ ){2}[a-z]/", strtolower($titel), $m);

$ny = strtr($m[0], ' ', '-');
Avatar billede jensgram Nybegynder
19. maj 2006 - 10:37 #2
Aldeles utestet, og allerede med fejl ;)

preg_match('/([a-z]+ ){2}[a-z]+/i', strtolower($titel), $m);

$ny = strtr($m[0], ' ', '-');
Avatar billede jensgram Nybegynder
19. maj 2006 - 10:39 #3
... ps: Det kan helt sikkert også klares uden reg.exp., men det kræver lidt mere kode, da man først lige skal finde 3. space.

Desuden kan det sikkert også laves i én preg_replace, men det er jeg slet ikke hård nok til.

- Jens
Avatar billede terrak Nybegynder
19. maj 2006 - 11:23 #4
<?php

$titel = "Sodanvand til de bedste priser i hele danmark";

$ny = explode(" ",$titel);

$nystreng = $ny[0]." ".$ny[1]." ".$ny[2];
if (!preg_match("/[a-zA-Z\s]{".strlen($nystreng)."}/",$nystreng)) {
echo "Valideringsfejl";
} else {
echo strtolower($nystreng);
}


?>

Men skal der ikke laves noget hvis $titel indeholder noget med æøå?
Avatar billede phpmanden Nybegynder
19. maj 2006 - 11:32 #5
jo så skal æøå bare laves om til ae, oe, aa,
Avatar billede terrak Nybegynder
19. maj 2006 - 12:14 #6
Okay, det kunne jeg bare ikke læse ud af dit oprindelige spørgsmål.

<?php

$titel = "Sodanvand til de bedste priser i hele danmark";

$ny = explode(" ",$titel);

$nystreng = $ny[0]." ".$ny[1]." ".$ny[2];
$danishvowels = array("æ","ø","å");
$danishvowelscompat = array("ae","oe","aa");
if (!preg_match("/[a-zA-Z\s]{".strlen($nystreng)."}/",$nystreng)) {
$nyfinal = str_replace($danishvowels,$danishvowelscompat,strtolower($nystreng));
} else {
$nyfinal = strtolower($nystreng);
}

echo $nyfinal;

?>
Avatar billede phpmanden Nybegynder
19. maj 2006 - 12:19 #7
det virker ikke jeg får kun de første ord frem
Avatar billede jensgram Nybegynder
19. maj 2006 - 12:25 #8
preg_match('/([a-zæøåÆØÅ]+ ){2}[a-zæøåÆØÅ]+/i', strtolower($titel), $m);

$ny = str_replace(array(' ', 'æ', 'ø', 'å'), array('-', 'ae', 'oe', 'aa'), $m[0]);
Avatar billede terrak Nybegynder
19. maj 2006 - 12:28 #9
De første ord, eller det første ord? Du beder jo netop om kun at få de første 3 ord ud.
Avatar billede phpmanden Nybegynder
19. maj 2006 - 12:47 #10
jensgram dit virker fint, MEN er titlen fx: Panasonic TH-42PV60 Testvinder i Video-magazin.de

så trækker den dette ud: testvinder-i-video

terrak ja kun det første ord
Avatar billede terrak Nybegynder
19. maj 2006 - 12:54 #11
Jeg ved ikke hvorfor det ikke virker ved dig, men nu har du jo skrevet at de tre ord kun må indeholde a-z og æ ø å skal konvertes til ae oe aa. Hvad skal der så ske med tal?
Avatar billede phpmanden Nybegynder
19. maj 2006 - 12:59 #12
de skal bare vises

Panasonic TH-42PV60 Testvinder i Video-magazin.de

skulle gerne blive til

panasonic-th-42pv60-testvinder
Avatar billede terrak Nybegynder
19. maj 2006 - 13:06 #13
Prøv lige at skriv hvad du får ud af dette script:
<?php

$titel = "Panasonic TH-42PV60 Testvinder i Video-magazin.de";
$ny = explode(" ",$titel);
$nystreng = $ny[0]."-".$ny[1]."-".$ny[2];
die($nystreng);

?>
Avatar billede phpmanden Nybegynder
19. maj 2006 - 13:17 #14
Panasonic-TH-42PV60-Testvinder
Avatar billede terrak Nybegynder
19. maj 2006 - 13:26 #15
Det her virker perfekt hos mig.. hvilken php version har du?

<?php

$titel = "Pansonic TH-42PV60 Testvinder i Video-magazin.de";

$ny = explode(" ",$titel);

$nystreng = $ny[0]."-".$ny[1]."-".$ny[2];
$danishvowels = array("æ","ø","å");
$danishvowelscompat = array("ae","oe","aa");
if (!preg_match("/[a-zA-Z1-9\s]{".strlen($nystreng)."}/",$nystreng)) {
$nyfinal = str_replace($danishvowels,$danishvowelscompat,strtolower($nystreng));
} else {
$nyfinal = strtolower($nystreng);
}

echo $nyfinal;

?>
Avatar billede phpmanden Nybegynder
19. maj 2006 - 13:34 #16
jamen hvorfor ikke bare bruge:

$titel = "Panasonic TH-42PV60 Testvinder i Video-magazin.de";
$ny = explode(" ",$titel);
$nystreng = $ny[0]."-".$ny[1]."-".$ny[2];

kan man så ikke lave alle bogstaver små ?
Avatar billede phpmanden Nybegynder
19. maj 2006 - 13:41 #17
$titel = "Panasonic TH-42PV60 Testvinder i Video-magazin.de";
$ny = explode(" ",$titel);
$nystreng = $ny[0]."-".$ny[1]."-".$ny[2];
$nyfinal = strtolower($nystreng);

<- det virker da fint, og så laver jeg en replace der fjerne æ ø å, og så kører det da ?
Avatar billede terrak Nybegynder
19. maj 2006 - 13:53 #18
Du startede med at sige at teksten skal følge et bestemt mønster, uden at sige hvad der skulle ske hvis det ikke følgte dette mønster. Så jeg gik ud fra at du søgte noget der fandt ud af om teksten følgte dette mønster, eller ej. Men hvis du bare skal erstatte forskellige ting, så er det vel fint som du foreslår, hvis bare du er sikker på at det er det eneste :-)

Så det vil sige:

<?php

$titel = "Pansonic TH-42PV60 Testvinder i Video-magazin.de";

$ny = explode(" ",$titel);

$nystreng = $ny[0]."-".$ny[1]."-".$ny[2];
$danishvowels = array("æ","ø","å");
$danishvowelscompat = array("ae","oe","aa");
$nyfinal = str_replace($danishvowels,$danishvowelscompat,strtolower($nystreng));

echo $nyfinal;

?>

Eller virker det ikke?
Avatar billede phpmanden Nybegynder
19. maj 2006 - 13:57 #19
jo det er som det skal være, smid svar :)
Avatar billede jensgram Nybegynder
19. maj 2006 - 14:13 #20
Jå ok - det var jo ikke lige det jeg læste ud af "må kun indeholde tegn fra A-Z" ;)

preg_match('/([^ ]+ ){2}[^ ]+/i', strtolower($titel), $m);

$ny = str_replace(array(' ', 'æ', 'ø', 'å'), array('-', 'ae', 'oe', 'aa'), $m[0]);
Avatar billede jensgram Nybegynder
19. maj 2006 - 14:13 #21
Hov:

preg_match('/^([^ ]+ ){2}[^ ]+/i', strtolower($titel), $m);

$ny = str_replace(array(' ', 'æ', 'ø', 'å'), array('-', 'ae', 'oe', 'aa'), $m[0]);
Avatar billede terrak Nybegynder
19. maj 2006 - 14:44 #22
Svar.
Avatar billede terrak Nybegynder
19. maj 2006 - 14:45 #23
Du burde dog også give point til jensgram, da han ligeledes har brugt tid på at prøve at hjælpe dig.
Avatar billede jensgram Nybegynder
19. maj 2006 - 14:48 #24
Svar.
Avatar billede phpmanden Nybegynder
19. maj 2006 - 15:40 #25
Ja jeg takker jer begge for jeres tid, og svar :)
Avatar billede jensgram Nybegynder
19. maj 2006 - 17:35 #26
Så lidt.
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