In PHP, which is faster: preg_split or explode?

前端 未结 3 2044
不知归路
不知归路 2020-12-06 04:20

This may sound like a stupid question, but: which is faster when using it to extract keywords in a search query in php:

$keyword = preg_split(\'/[\\s]+/\', $         


        
相关标签:
3条回答
  • 2020-12-06 05:08

    In a simple usage explode() is than faster, see: micro-optimization.com/explode-vs-preg_split (link from web.archive.org)

    But preg_split has the advantage of supporting tabs (\t) and spaces with \s.

    the \s metacharacter is used to find a whitespace character.

    A whitespace character can be (http://php.net/manual/en/regexp.reference.escape.php):

    • space character (32 = 0x20)
    • tab character (9 = 0x09)
    • carriage return character (13 = 0x0D)
    • new line character (10 = 0x0A)
    • form feed character (12 = 0x0C)

    In this case you should see the cost and benefit.

    A tip, use array_filter for "delete" empty items in array:

    Example:

    $keyword = explode(' ', $_GET['search']); //or preg_split
    print_r($keyword);
    
    $keyword = array_filter($arr, 'empty');
    print_r($keyword);
    

    Note: RegExp Perfomance

    0 讨论(0)
  • 2020-12-06 05:12

    General rule: if you can do something without regular expressions, do it without them!

    if you want to split string by spaces, explode is way faster.

    0 讨论(0)
  • 2020-12-06 05:23

    Explode is faster, per PHP.net

    Tip If you don't need the power of regular expressions, you can choose faster (albeit simpler) alternatives like explode() or str_split().

    0 讨论(0)
提交回复
热议问题