[定期] 通常のセグメンテーションについて質問して、オンラインで解決してください~
目的: 通常のセグメンテーションのキーワード。
キーワードが (間に複数のスペースがある) であると仮定します: you me her
アスタリスクを使用します:
print_r(preg_split("/(\s*)/", $_POST['query']));
ログイン後にコピー
結果: 配列 ([0] => [1] => ? [2] => ? [3] => ? [4] => [5] => ? [6] => [7] => [12] =>
プラス記号を使用します: print_r(preg_split("/(s+)/", $_POST['query']));
結果: 配列 ([0] => あなた [1] => 私 [2] => 彼女 )
これはなぜでしょうか?
通常のマニュアル:
* 直前の部分式と 0 回以上一致します。たとえば、zo* は「z」と「zoo」に一致します。 * {0,} に相当します。
+ 前の部分式と 1 回以上一致します。たとえば、「zo+」は「zo」と「zoo」には一致しますが、「z」には一致しません。 + は {1,} と同等です。
1 つは 0 回以上一致し、もう 1 つは 1 回以上一致します。その差はそれだけ大きいでしょうか。なぜアスタリスクが文字化けを引き起こすのか全く分かりません~~~
-----解決策--------------------------------
*は0回も表すことができますが、スペースで区別したくないですか?スペースもたくさんあります~
-----解決策---------
は0と一致する必要があります回
------解決策---------
s*は「あなた」の中にあるかもしれないエンコーディングの 1 バイト目と 2 バイト目で一致する文字が 0 件あるため、文字化けが表示されます
-----解決策-------------- ------
なぜ分割を使用するのですか?