заменяя пробелы только одним «_»,

Я пытаюсь заменить все последовательные пробелы только одним подчеркиванием; Я могу легко заменить одно пространство на «_», используя следующую строку кода:

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

Evan Я могу заменить одно пробел на «_» следующей строкой кода:

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

Но проблема в том, что я не знаю, сколько пробелов я должен проверить!

Если мой вопрос непонятен, сообщите мне, какая часть вам нужна для уточнения.

благодаря

Solutions Collecting From Web of "заменяя пробелы только одним «_»,"

Возможно, самое чистое и удобное для чтения решение:

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

Это заменит все пробелы (независимо от того, сколько) с одним подчеркиванием.

Вы можете сделать это с регулярным выражением:

 [ ]+ 

Это будет соответствовать «одному или нескольким символам пробела»; если вы хотите «любые пробелы» (включая вкладки), вы можете вместо этого использовать \s+ .

Используя это с PHP preg_replace() :

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

Используйте preg_replace() :

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

+ в регулярном выражении означает «повторяется 1 или более раз», следовательно, это будет соответствовать [SPACE] а также [SPACE][SPACE][SPACE] .

Вы можете использовать регулярные выражения:

 $name = preg_replace("#\s+#", "_", $name);