PHP: Best way to extract text within parenthesis?

后端 未结 8 1463
北海茫月
北海茫月 2020-11-28 06:11

What\'s the best/most efficient way to extract text set between parenthesis? Say I wanted to get the string \"text\" from the string \"ignore everything except this (text)\"

8条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-28 06:46

    So, actually, the code you posted doesn't work: substr()'s parameters are $string, $start and $length, and strpos()'s parameters are $haystack, $needle. Slightly modified:

    $str = "ignore everything except this (text)";
    $start  = strpos($str, '(');
    $end    = strpos($str, ')', $start + 1);
    $length = $end - $start;
    $result = substr($str, $start + 1, $length - 1);

    Some subtleties: I used $start + 1 in the offset parameter in order to help PHP out while doing the strpos() search on the second parenthesis; we increment $start one and reduce $length to exclude the parentheses from the match.

    Also, there's no error checking in this code: you'll want to make sure $start and $end do not === false before performing the substr.

    As for using strpos/substr versus regex; performance-wise, this code will beat a regular expression hands down. It's a little wordier though. I eat and breathe strpos/substr, so I don't mind this too much, but someone else may prefer the compactness of a regex.

提交回复
热议问题