split by spaces but not when phrase is inside quotes

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • TRiG
    • Sep 2009
    • 1

    split by spaces but not when phrase is inside quotes

    Handy for creating a search query.

    There's a suggested answer on the messageboard, but I think this is cleaner.

    Code:
    $phrases = explode('"', $q);
    foreach ($phrases as $k => $v) {
            if (!$v) continue;
            if ($k % 2) {
                $filters[] = $v;
                continue;
            }
            $a = explode(' ', $v);
            foreach ($a as $word) {
                if (!$word) continue;
                $filters[] = $word;
            }
    }
    print_r($filters);
    exit;
    Last edited by TRiG; Sep 30 '09, 01:04 PM. Reason: Changing "PHP" tags to "code" tags
  • Atli
    Recognized Expert Expert
    • Nov 2006
    • 5062

    #2
    Hey.

    You could also try a regular expression:
    [code=php]<?php
    $regex = '/"[^"]+"|[^"\s]+/i';
    if(preg_match_a ll($regex, $q, $matches)) {
    print_r($matche s[0]);
    }
    else {
    echo "Empty query";
    }
    ?>[/code]
    Should be a bit faster, I'd guess.

    Comment

    Working...