2013-07-05 2 views
2

Я хочу заменить несколько пробелов для одного пробела в строке. пожалуйста, сообщите нам, как это сделать. Пример кода:php заменяет несколько пробелов одним пробелом

<?php 
    $input="bikash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ranjan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nayak"; 
    echo $output =preg_replace('/(()+|(\\n)+)/', '$2$3',$input); 

    ?> 

выход приходит:
"Бикаш           Ranjan                   Найяк"

+0

Разве вы не означает, что вы хотите _replace_ несколько пространств с _single_ пространства ? – Joum

+0

Dupe-да-Whoop ... -_- – Joum

ответ

1

Попробуйте этот. Он будет отображаться как единое пространство в браузере

$output = str_replace("&nbsp", " ",$input); 
+0

ok Спасибо, наконец, решил заменить строку. до этого я отсутствовал кое-что, но то же самое, что я использовал, не работал. Еще раз спасибо –

1

Попробуйте

$output = implode("&nbsp;",array_filter(explode("&nbsp;",$input))); 
+0

не работает: мой код в соответствии с

+0

@BikashNayak: попробуйте этот '$ output = implode ("   ", array_filter ("   ", $ input)));' – Nauphal

4

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

$output = preg_replace('!\s+!', ' ', $input); 
+0

это не работает rajeev, вы можете проверить, я также пытаюсь много вещи, использующие preg_replace() fuction –

+0

, не будут работать в содержимом '$ input' OP. –

+0

причина позади     –

1
$output = preg_replace('!\(&nbsp;)+!', '&nbsp;', $input); 
1

попробовать этот

$output = preg_replace('/\s+/', ' ',$input); 
1

Добавлена ​​дополнительная строка ($ вход = html_ent .....), который декодирует HTML entitiy годов.

$input="bikash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ranjan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nayak"; 

$input = html_entity_decode($input); 

echo $output =preg_replace('/(()+|(\\n)+)/', '$2$3',$input); 
1

Попробуйте этот код

$input="bikash&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ranjan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nayak"; 
$array = explode('&nbsp;', $input); 
$output = implode('&nbsp;', array_filter($array)); 
echo $output; 

Один лайнер:

$output = implode('&nbsp;', array_filter(explode('&nbsp;', $input))); 
+0

Вы правы, но код слишком длинный «хорошо работает» –

+0

Я могу написать его как одну строку, если вы хотите. Выбранное вами решение неверно. Он по-прежнему будет помещать несколько пробелов, но браузер будет показывать только 1 или 2. И пробелы не являются «незавершенными пробелами». – Fluitketel

Смежные вопросы