Avatar billede phpmanden Nybegynder
07. juni 2006 - 13:53 Der er 9 kommentarer og
1 løsning

Konvertere text

Jeg har nogle $titler som ser sådan ud og skal blive til -> altså så den smider alt væk efter nummer 2 mellemrum ?:

Grundig Vaskemaskine -> grundig vaskemaskine
JBL T455-484 Subwoofer -> jbl t455-484
Panasonic Bagemaskine SD444 -> panasonic bagemaskine

LIGE NU BRUGER JEG DENNE KODE:

<?php

function convertText($input)
{
    $firstSpace = strpos($input, ' ');
    $firstText = substr($input,0,$firstSpace);
    $firstSpace++;
   
    $secondSpace = strpos($input, ' ', $firstSpace);
    if($secondSpace === false)
        $secondText = substr($input,$firstSpace);
    else
        $secondText = substr($input,$firstSpace,$secondSpace-$firstSpace);
   
    return strtolower($firstText) . "/" . strtolower($secondText);
}

?>

Det virker også fint.....men kan det ikke gøres MEGET kortere med

explode eller noget ?
Avatar billede phpmanden Nybegynder
07. juni 2006 - 14:07 #1
Virker det her ikke lige så godt:

$titel="Grundig Vaskemaskine";

$small = strtolower($titel);
$str = explode(" ", $small);

echo $str[0]; echo $str[1];
Avatar billede nielle Nybegynder
07. juni 2006 - 15:12 #2
Mulig kode:


$input = "Panasonic Bagemaskine SD444";
$inputArr = explode(" ", $input);
$inputArr = array_slice($inputArr, 0, 2);
$input = implode(" ", $inputArr);

Eller i en lang særning:

$input = implode(" ", array_slice(explode(" ", $input), 0, 2));
Avatar billede nielle Nybegynder
07. juni 2006 - 15:13 #3
Jeg er faktisk ikke sikker på om du får en fejl med:

echo $str[1];

hvis der kun er et or i din tekst. Men jeg tror det nu ikke. :^)
Avatar billede phpmanden Nybegynder
07. juni 2006 - 15:17 #4
Der er ALTID min 2 ord ;)

nielle hvad gør dit bedre end mit eksempel ? :)
Avatar billede nielle Nybegynder
07. juni 2006 - 15:53 #5
Jeg tvivler på at den løser opgaven bedre, men den er da i hvertfald mere kompakt og det var det du startede med at efterspørge :^)

function convertText($input)
{
    return implode(" ", array_slice(explode(" ", strtolower($input)), 0, 2));
}

Imidlertid er "mere kompakt" ikke en kvalitet i sig selv! One-liners er som regel svære at gennemskue for andre (inkl. dig selv om ½ års tid), og derfor ikke specielt vedligeholdelsesvenlige.
Avatar billede phpmanden Nybegynder
07. juni 2006 - 16:07 #6
så du vil anbefale er bruge mit eget eller dit $input = implode(" ", array_slice(explode(" ", $input), 0, 2));

da de vil virke 100% og er noget kortere end det første :) ???
Avatar billede nielle Nybegynder
07. juni 2006 - 18:09 #7
Jeg vil ikke anbefale den ene frem for den anden. Umiddelbart vil jeg gætte på at de er nogenlunde lige effektive.

Jeg er nu heller ikke sikker på at de er mere effektive end det du har fra starten af: Hvis din tekst er meget lang, og har mange mellemrum, kunne jeg godt forestille mig at explode() ender med at bruge flere ressourcer end at lede efter mellemrum nr. 2 som du gør.

"Kort og kompakt" kode er ikke nødvendigvis det samme som "effektiv" kode. Desuden er performance ikke nødvendigvis et-og-alt (selv om det er vigtigt), men vedligeholdelsesvenlighed er faktisk også vigtig.

Til sidst er her endnu et bud:

function convertText($input)
{
    $firstSpacePos = strpos($input, " ");
    $secondSpacePos = strpos($input, " ", $firstSpacePos);

    return ($secondSpacePos === false)
        ? strtolower(substr($input, 0, $firstSpacePos))
        : strtolower(substr($input, 0, $secondSpacePos));
}
Avatar billede nielle Nybegynder
13. juni 2006 - 18:43 #8
Har du fået svar på alle dine spørgsmål, eller er der mere?
Avatar billede phpmanden Nybegynder
18. juni 2006 - 22:29 #9
Ja tak, smid point ;)
Avatar billede nielle Nybegynder
18. juni 2006 - 22:33 #10
Svar :^)
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