Re: Breaking up search terms into an array intelligently

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/7/05, Paul Groves <paul.groves@xxxxxxxxxxxxx> wrote:
> I want to be able to break up a number of search terms typed into an input
> box into array, simple enough one would think, just use explode, e.g
> 
> 
> $array = explode(" ", $string);
> 
> 
> But what if I want to be able to cope with search terms seperated by > 1
> space (a common typing error)? This should work:
> 
> 
> function enhanced_explode($string) {
>  $array = preg_split ("/\s+/", $string);
>  return ($array);
> }
> 
> 
> But what if I want to allow "Google"-type search parameters, so that
> something like the following is split into 3 search terms?:
> firstsearchterm "second search term" thirdsearchterm
> The following code will do the trick, but is slow and doesn't allow for
> multiple spaces as the delimiter, nor the possibility of multiple delimiters
> (e.g. " ", "+", "," etc.)

<?php
$search ='first -second +third "fourth \"fifth\""    -"sixth seventh" 
    eighth';

$re = '/[+-]?("(?:[^"\\\\]|\\\\.)*"|[^\s]+)/';

preg_match_all($re, $search, $terms);

print_r($terms);
?>

Array
(
    [0] => Array
        (
            [0] => first
            [1] => -second
            [2] => +third
            [3] => "fourth \"fifth\""
            [4] => -"sixth seventh"
            [5] => eighth
        )

    [1] => Array
        (
            [0] => first
            [1] => second
            [2] => third
            [3] => "fourth \"fifth\""
            [4] => "sixth seventh"
            [5] => eighth
        )

)

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux