Я получаю $row['message']
из базы данных MySQL, и мне нужно удалить все пробелы, как \n
\t
и так далее.
$row['message'] = "This is a Text \n and so on \t Text text.";
должен быть отформатирован в:
$row['message'] = 'This is a Text and so on Text text.';
Я попытался:
$ro = preg_replace('/\s\s+/', ' ',$row['message']);
echo $ro;
но это не удаляет \n
или \t
, только отдельные пробелы. Может кто-нибудь сказать мне, как это сделать?
php
regex
string
preg-replace
whitespace
creativz
источник
источник
Ответы:
Тебе нужно:
Вы используете,
\s\s+
что означает пробел (пробел, табуляция или перевод строки), за которым следует один или несколько пробелов. Что фактически означает замену двух или более пробелов одним пробелом.Вам нужно заменить один или несколько пробелов одним пробелом, чтобы вы могли использовать шаблон
\s\s*
или\s+
(рекомендуется)источник
\s
не включая «вертикальную вкладку»chr(11)
. Чтобы включить его, вам нужно использоватьspace
класс символов:[[:space:]]+
php.net/manual/en/regexp.reference.character-classes.phpЭто выводы
источник
\s
уже содержит вкладки и новые строки, так что приведенного выше регулярного выражения кажется достаточным.источник
/m
будет иметь эффекта, так как нет^
или$
якоря, и/u
не будет иметь никакого эффекта, кроме как немного замедлить его и умереть, если входная строка недопустима UTF-8 (это не влияет на то\s
, что соответствует, но это повлияет на\pZ
).упрощено до одной функции:
основанный на ответе Дануэля О'Нила.
источник
источник
Я не могу воспроизвести проблему здесь:
Я не уверен, была ли это просто ошибка транскрипции или нет, но в вашем примере вы используете строку в одинарных кавычках.
\n
и\t
рассматриваются только как новая строка и табуляция, если у вас есть строка в двойных кавычках. То есть:Изменить : как указал Codaddict,
\s\s+
не заменит один символ табуляции. Я до сих пор не думаю, что использование\s+
является эффективным решением, так как насчет этого:источник
Это заменяет все вкладки, все новые строки и все комбинации нескольких пробелов, вкладок и новых строк одним пробелом.
источник
источник
Без preg_replace ()
источник
Я использую этот код и шаблон:
Вы можете проверить это на http://writecodeonline.com/php/
источник
SELECT search_able, REGEXP_REPLACE (search_able,"\\s+",' ') FROM book where id =260
Так что большое спасибоВсе, что вам нужно, это запустить его следующим образом:
источник
Вот что я бы использовал:
а. Убедитесь, что вы используете двойные кавычки, например:
б. Чтобы удалить лишние пробелы, используйте:
Возможно, это не самое быстрое решение, но я думаю, что потребуется минимум кода, и оно должно работать. Я никогда не использовал mysql, поэтому я могу ошибаться.
источник
На самом деле, если подумать, что вы хотите что-то вроде этого:
источник
это заменит несколько вкладок одной вкладкой
источник
Без preg_replace, с помощью цикла.
источник