2014-01-27 5 views
1

Привет, ребята, я в настоящее время есть проблема с моим preg_replace:Как удалить более одного пробела

preg_replace('#[^a-zA-z\s]#', '', $string) 

Она хранит все алфавитные буквы и пробелы, но я хочу больше, чем один пробел, чтобы быть уменьшена только один , Любая идея, как это можно сделать?

+1

http://dk1.php.net/trim – jycr753

ответ

1

Тип символа \s означает пять различных символов: horizontal tab (9), line feed (10), form feed (12), carriage return (13) и ordinary space (32). Следующий код найдет каждую подстроку $string, которая полностью состоит из \s. Будут сохранены только первые \s в подстроке. Например, если линейная подача, горизонтальная вкладка и обычное пространство происходят сразу друг за другом в подстроке, только после того, как будет выполнена замена, останется только один канал.

$string = preg_replace('#(\s)\s+#', '\1', $string); 
0
preg_replace(array('#\s+#', '#[^a-zA-z\s]#'), array(' ', ''), $string); 

Хотя он заменит все непечатаемых с пробелами. Если вы хотите заменить последующие пробелы (например, две строки новой строки только с одной новой строкой), вы должны найти логику для этого, coz \ s + будет соответствовать «\ n \ n \ n» (5 пробелов подряд).

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

From Regular Expression Basic Syntax Reference

\ д \ ш и \ S

Shorthand классы символов соответствия цифр, слов символов (буквы, цифры и символы подчеркивания) и пробелы (пробелы, табуляции, и строка брейки). Может использоваться внутри и снаружи классов символов.

0

попробуйте использовать trim вместо

<?php 
$something = " Error"; 
echo $something."\n"; 
echo "------"."\n"; 
echo trim($something); 
?> 

выход

Error 
------ 
Error 
+1

насчет ' "Err или"'? – Aquillo

+0

В этом случае вам понадобятся выражения регулы, так как это не лишнее пространство, это просто пропущенное слово. – jycr753

+0

но обратите внимание ... плохо пытаться исправить такие миры. – jycr753

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