&"/> &">

ホームページ >バックエンド開発 >PHPチュートリアル >【定期】定期セグメンテーションについて質問し、オンラインで解決します

【定期】定期セグメンテーションについて質問し、オンラインで解決します

WBOY
WBOYオリジナル
2016-06-13 12:56:53751ブラウズ

[定期] 通常のセグメンテーションについて質問して、オンラインで解決してください~
目的: 通常のセグメンテーションのキーワード。

キーワードが (間に複数のスペースがある) であると仮定します: 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 件あるため、文字化けが表示されます

-----解決策-------------- ------ なぜ分割を使用するのですか?
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。