webForumDet fria alternativet

Fixa till sökargument

PHP

0 svar · 1 476 visningar · startad av Nexus86

Medlem sedan okt. 20023 030 inlägg
Frågan#1

Låt säga att man programmerar en sökfunktion och vill att man ska kunna söka efter fraser som omges av citattecken medan man vill att alla andra ord får stå precis var de vill. Då kan denna funktion komma till användning. Det den gör är att dela upp strängen till en array. D.v.s texten "en hel mening" några ord resulterar i:

[red]Array
(
    [0] => en hel mening
    [1] => några
    [2] => ord
)[/red]

Här är funktionen:

function stringtoarray($str) {
    $tarray = explode(' ', $str);
    $array = array();
    $opencitat = 0;
    $insertvalue = '';

    foreach ($tarray as $value) {
        if (substr($value, 0, 1) == '"') {
            if ($opencitat) {
                $array[count($array)] = trim($insertvalue);
                $insertvalue = '';
                $opencitat = 0;
            } else {
                $insertvalue .= trim(substr($value, 1, strlen($value)));
                $opencitat = 1;
            }
        } elseif (substr($value, strlen($value) - 1, 1) == '"') {
            if ($opencitat) {
                $array[count($array)] = trim("$insertvalue " . substr($value, 0, strlen($value) - 1));
                $insertvalue = '';
                $opencitat = 0;
            } else {
                $array[count($array)] = trim(substr($value, 0, strlen($value) - 1));
                $opencitat = 1;
            }
        } else {
            if ($opencitat) 
                $insertvalue .= " $value";
            } else {
                $array[count($array)] = trim($value);
            }
        
    }

    if ($opencitat) {
        $array[count($array)] = trim($insertvalue);
    }

    return $array;
}
274 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)