Avatar billede kasperbn Nybegynder
15. maj 2006 - 14:33 Der er 7 kommentarer og
1 løsning

Hive "quoted words" ud af søgestreng

Hej

Jeg sidder med en søgestreng og skal have den delt op i søgeord (i php). Et eksempel kan være:

søgestreng: "et hus" sten bro "mange elefanter" rød

den algoritme jeg søger skal dele det op i et array således:

Array (
[0] => et hus
[1] => sten
[2] => bro
[3] => mange elefanter
[4] => rød
)

Nogen der har et bud?
Avatar billede jensgram Nybegynder
15. maj 2006 - 22:02 #1
Kan ikke lige gennemskue en Reg.Exp., men forsøger mig med lidt procedurel kode:

function quoted_str2array($str) {
    $retval = array();
    $quote  = false;

    foreach ($part in explode(' ', $str)) {
        if (strlen($part) > 1 && (substr($part, 0, 1) == '"' || $substr($part, -1))) {
            $quote = !$quote;
        }

        if ($quote) {
            $retval[(sizeof($retval) - 1)] .= ' ' . $part;
        } else {
            $retval[] = $part;
        }
    }

    return $retval;
}
Avatar billede jensgram Nybegynder
15. maj 2006 - 22:04 #2
Hov:

function quoted_str2array($str) {
    $retval = array();
    $quote  = false;

    foreach ($part in explode(' ', $str)) {
        if (strlen($part) > 1 && (substr($part, 0, 1) == '"' || $substr($part, -1) == '"')) {
            $quote = !$quote;
        }

        if ($quote) {
            $retval[(sizeof($retval) - 1)] .= ' ' . $part; // Vi er i en quote og sætter derfor denne $part på den sidste stump.
        } else {
            $retval[] = $part; // Vi er udenfor en quote og lader derfor denne $part blive en del af retur-array'et.
        }
    }

    return $retval;
}
Avatar billede jensgram Nybegynder
15. maj 2006 - 22:04 #3
Utestet, og ikke hvad du spurgte om, men dog et bud ;)
Avatar billede arne_v Ekspert
16. maj 2006 - 04:07 #4
til inspiration:

<?php
$s = '"et hus" sten bro "mange elefanter" rød';
echo "$s<br>\r\n";
preg_match_all('/([^ "]+)|("[^"]*")/',$s,$matches);
foreach($matches[0] as $val) {
    echo "$val<br>\r\n";
}
?>
Avatar billede kasperbn Nybegynder
16. maj 2006 - 09:59 #5
Sådan dér!
Avatar billede kasperbn Nybegynder
16. maj 2006 - 09:59 #6
Smid et svar
Avatar billede jensgram Nybegynder
16. maj 2006 - 11:00 #7
Det er fandme smart!
Avatar billede arne_v Ekspert
16. maj 2006 - 13:12 #8
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
Kurser inden for grundlæggende programmering

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