Если бы вы хотели сделать это так ...
Вы могли бы просто сделать что-то вроде этого, предполагая, что есть несколько входных сообщений, и они предназначены только для поиска, это может выглядеть примерно так
function search(){
$url = $this->uri->segment(2);
if(empty($url)){
if((isset($_POST) && (!empty($_POST))
{
$search_seg = '';
foreach($_POST as $k => $v){
// I always make sure to use the CI post w/
// TRUE set in the second param so as to XSS filter the user input
$var = $this->input->post($k, TRUE);
// Just incase the user input had a plus in it?
$var = str_replace('+', '%20', $var)
// Concatenate the search string
$search_seg .= $var . '+';
}
// Make the url, use substr() to strip the last + off the end
$search_seg = 'search/' . substr($search_seg, 0, -1);
/* Make sure CI's URL helper is enabled
$this->load->helper('url'); if it hasn't been loaded
This will give the illusion that the form post went to this URL,
thus doing what you're looking for... */
redirect($search_seg, 'location');
}else{
// There was no post, do whatever
}
}else{
$search_arr = explode('+', $url);
}
Вышеприведенное должно в точности соответствовать тому, что вы описали, хотя есть способы воссоздания массива $ _GET и его использования с URL-адресами в стиле CI, хотя это немного сложнее
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
если есть только одно поле ввода для поиска и, скажем, термины разделены пробелами, то вы можете сделать это следующим образом (возможно, с некоторой фильтрацией регулярных выражений) ... замените цикл foreach($_POST as $k => $v)...
следующим:
$keywordinput = $this->input->post('keywords', TRUE);
$keywordinput = trim($keywordinput);
$keywords = explode(' ', $keywordinput);
foreach($keywords as $word){
if(!empty($word)){
$word = str_replace('+', '%20', $var)
$search_seg .= $word . '+';
}
}