2

連続するすべてのスペースを1 つのアンダースコアに置き換えようとしています。次のコード行を使用して、1 つのスペースを「_」に簡単に置き換えることができます。

str_replace(" ", "_",$name);

Evan 次のコード行で、1 つのスペースを「_」に置き換えることができます。

str_replace("  ", "_",$name);

しかし問題は、チェックしなければならない空白の数がわからないことです!

私の質問が明確でない場合は、さらに明確にする必要がある部分を教えてください。

ありがとう

4

4 に答える 4

6

おそらく最もクリーンで読みやすいソリューション:

preg_replace('/[[:space:]]+/', '_', $name);

これにより、すべてのスペース (いくつであっても) が 1 つのアンダースコアに置き換えられます。

于 2013-10-22T13:29:05.390 に答える
3

これは正規表現で実現できます。

[ ]+

これは「1 つ以上の空白文字」に一致します。「任意の空白」(タブを含む) が必要な場合は、代わりに を使用できます\s+

これを PHP で使用すると、次のようになりますpreg_replace()

$name = preg_replace('/[ ]+/', '_', $name);
于 2013-10-22T13:29:31.773 に答える
2

使用preg_replace():

$name = preg_replace('/ +/', '_', $name);

+正規表現では、「1 回以上繰り返される」ことを意味するため、これは と[SPACE]同様に一致します[SPACE][SPACE][SPACE]

于 2013-10-22T13:29:09.753 に答える
0

正規表現を使用できます。

$name = preg_replace("#\s+#", "_", $name);
于 2013-10-22T13:29:12.690 に答える