Функция PHP trim() не удаляет пробелы из середины строки

у меня есть довольно прямо вперед код, но что-то идет не так. Следующий код

$title = $_POST['templatename'];
$user = $_POST['username'];
$selectedcoordinates = $_POST['templatestring'];

$title = trim($title);
$user = trim($user);


$filename = $title . "_by_" . $user;

var_dump($title);
var_dump($user);
var_dump($filename);

возвращает это:

string(11) "Single Tile"
string(6) "Author"
string(21) "Single Tile_by_Author" 

где значения происходят из HTML-формы. Почему не "Single Tile" стать "SingleTile"?

8 ответов


функции trim() удаляет только пробелы (и управляющие символы, такие как \N) из начала и конца строки.

$title = str_replace(" ", "", trim($title));
$user = str_replace(" ", "", trim($user));

Я просто хотел атаковать проблему. Таким образом, решение может выглядеть плохо. В любом случае, лучшее использование для этого-использовать следующим образом:

$title = str_replace(" ", "", $title);
$user = str_replace(" ", "", $user);

Я убрал


давайте заменим не только пространство, но и все ASCII символы проверочные символы.

ex. Space Tab End of Line

$str = preg_replace("/[\x0-\x20\x7f]/", '', $str);

 array('username','filter','filter'=>'trim')
array('templatename','filter','filter'=>'trim')

добавить строки в правилах


Trim удаляет только пробелы в начале и конце, а не все пробелы.

str_replace(' ','',$string);

удалить все пробелы


http://www.php.net/manual/en/function.trim.php обрезать - удалить пробелы (или другие символы) из начала и конца строки

это означает, что trim удалит только пробелы в конце и при ebginning строки, а не внутри вашей строки. Вы можете попробовать это:

$title = str_replace(' ','',$title);

обрезать по краям.

просто использовать:

$title = str_replace(' ', '', $title);
$user = str_replace(' ', '', $user);;

можно использовать str_replace() function, эта функция возвращает строку или массив со всеми вхождениями поиска в subject, замененными заданным значением replace.

  $title = str_replace(' ', '', $title);

синтаксис: str_replace (mixed $search , mixed $replace , mixed $subject [, int &$count ] )

поиск

искомое значение, иначе известное как игла. Массив может использоваться для обозначения нескольких хвоя.

заменить Значение замены, будет использовано для замены искомых значений Search. Массив может использоваться для обозначения нескольких замен.

теме

строка или массив, поиск и замена на, иначе известный как стог сена.

Если subject является массивом, то поиск с заменой будет осуществляться над каждым элементом subject, а возвращаемое значение является массивом, а также.

больше о : http://in3.php.net/str_replace


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

синтаксис функции:

TRIM(строка,в charlist);

второй параметр является необязательным. Если присутствует, он удаляет символы, присутствующие в charlist как заканчивается строки.

пример:

$str="beautiful day";
echo trim($str, "aby");

выход:

eautiful d

буквы a , b и y удаляется с обоих концов строки

однако, если второй параметр опущен, то следующие символы будут удалены из как заканчивается строки.

"" - NULL
"\t" - tab
"\n" - new line
"\x0B" - vertical tab
"\r" - carriage return
" " - ordinary white space

в вашем случае выход такой:

string(11) "Single Tile" string(6) "Author" string(21) "Single Tile_by_Author" 

пространство между Single и Tile_by_Author остается, поскольку пробелы удаляются из обоих заканчивается только