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?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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; }
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; }
Utestet, og ikke hvad du spurgte om, men dog et bud ;)
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"; } ?>
Kurser inden for grundlæggende programmering