web-dev-qa-db-ja.com

PHPではどちらが速いですか:preg_splitまたはexplode?

これは愚かな質問のように聞こえるかもしれませんが、phpの検索クエリでキーワードを抽出するために使用する方が高速です。

$keyword = preg_split('/[\s]+/', $_GET['search']);

または

$keyword = explode(' ', $_GET['search']);
21
Marco

PHP.netによると、展開はより高速です

ヒント正規表現の能力が必要ない場合は、explode()やstr_split()などのより高速な(単純ですが)代替を選択できます。

22
Machavity

単純な使用法では、explode()の方が高速です。以下を参照してください。 micro-optimization.com/explode-vs-preg_split (web.archive.orgからのリンク)

ただし、 preg_split には、タブ(\t)および\s付きのスペースをサポートするという利点があります。

\sメタ文字は、空白文字を見つけるために使用されます。

空白文字は( http://php.net/manual/en/regexp.reference.escape.php )になります。

  • スペース文字(32 = 0x20
  • タブ文字(9 = 0x09
  • 復帰文字(13 = 0x0D
  • 改行文字(10 = 0x0A
  • フォームフィード文字(12 = 0x0C

この場合、コストとメリットが表示されます。

ヒント、配列内の空の項目を「削除」するには array_filter を使用します。

例:

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

$keyword = array_filter($arr, 'empty');
print_r($keyword);

注:RegExpパフォーマンス

13

一般的な規則:正規表現なしで何かを実行できる場合は、それらなしで実行できます!

スペースで文字列を分割する場合は、分解がはるかに高速です。

7
Forien