Удалить несколько пробелов - PullRequest
190 голосов
/ 24 февраля 2010

Я получаю $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, только одиночные пробелы. Может кто-нибудь сказать мне, как это сделать?

Ответы [ 15 ]

1 голос
/ 27 июня 2010

Все, что вам нужно, это запустить его следующим образом:

echo preg_replace('/\s{2,}/', ' ', "This is   a Text \n and so on \t     Text text."); // This is a Text and so on Text text.
0 голосов
/ 01 декабря 2016

Без preg_replace, с помощью цикла.

<?php

$str = "This is   a Text \n and so on \t     Text text.";
$str_length = strlen($str);
$str_arr = str_split($str);
for ($i = 0; $i < $str_length; $i++) {
    if (isset($str_arr[$i + 1])
       && $str_arr[$i] == ' '
       && $str_arr[$i] == $str_arr[$i + 1]) {
       unset($str_arr[$i]);
    } 
    else {
      continue;
    }
}

 echo implode("", $str_arr) ; 

 ?>
0 голосов
/ 02 апреля 2014

это заменит несколько вкладок одной вкладкой

preg_replace("/\s{2,}/", "\t", $string);
0 голосов
/ 09 мая 2013

На самом деле, если подумать, что вы хотите что-то вроде этого:

preg_replace('/\n+|\t+|\s+/',' ',$string);
0 голосов
/ 24 июня 2012

Я использую этот код и шаблон:

preg_replace('/\\s+/', ' ',$data)

$data = 'This is   a Text 
   and so on         Text text on multiple lines and with        whitespaces';
$data= preg_replace('/\\s+/', ' ',$data);
echo $data;

Вы можете проверить это на http://writecodeonline.com/php/

...