Мне удается удалить пробелы, но я не могу понять, почему это также удалит мои возвращения. В моей форме есть текстовая область, и я хочу разрешить максимум два возврата. Вот то, что я использовал до сих пор.
$string = preg_replace('/\s\s+/', ' ', $string); // supposed to remove more than one consecutive space - but also deletes my returns ...
$string = preg_replace('/\n\n\n+/', '\n\n', $string); // using this one by itself does not do as expected and removes all returns ...
Кажется, первая строка уже избавляется от более чем одного пробела И все возвращается … Что странно. Не уверен, что я делаю это правильно …
Так как \s
также будет соответствовать символам новой строки. Поэтому я предлагаю вам использовать \h
для соответствия любого вида горизонтальных пространств.
$string = preg_replace('/\h\h+/', ' ', $string);
\s match any white space character [\r\n\t\f ]
Смотрите определение \s
.Это включает \n
.Использование
\h matches any horizontal whitespace character (equal to [[:blank:]])
использование \h
для горизонтальных пробелов.
Для тех из вас, кому это нужно, вот как вы удаляете два возврата каретки из текстовой области.
preg_replace('/\n\r(\n\r)+/', "\n\r", $str);
Для вопроса о месте, как это было опубликовано выше, замените \ s на \ h