- PHP trim() function: Remove characters from string
- Table of Contents — PHP Trim:
- What does the PHP trim() function do?
- Code & Explanation:
- Syntax:
- Parameters
- Return Value:
- Code using PHP Trim:
- Closing thoughts — PHP trim():
- Удаление лишних пробелов в PHP.
- Удаление пробелов в начале или конце строки.
- Удаление лишних пробелов в самом тексте.
- Удаление «не удаляемых» пробелов.
- trim
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- trim
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 2 notes
- Как из строк убрать пробелы на PHP?
- Trim()
- Preg_replace
- Str_replace()
- Пример поиска и замены пробелов
PHP trim() function: Remove characters from string
In this tutorial, we look at the PHP trim function. We look at how you can remove whitespaces and characters from a string using the trim function in PHP.
Table of Contents — PHP Trim:
What does the PHP trim() function do?
The trim() function in PHP removes whitespace or any other predefined character from both the left and right sides of a string.
ltrim() and rtrim() are used to remove these whitespaces or other characters from the left and right sides of the string. However, making use of just the trim() function without specifying ‘l’ or ‘r’ removes characters from both sides.
Code & Explanation:
In this section, we look at the various syntax, parameters, and return values used in the trim() function. Post that we look at a code snippet using the trim() function.
Syntax:
Parameters
- $string — Required. This is the string or the variable containing the string from which you want to remove whitespaces or characters.
- $charlist — Optional. This parameter specifies the character that needs to be removed from the string. If left empty, all the characters mentioned below would be removed.
- “\0” – NULL
- “\t” – tab
- “\n” – newline
- “\x0B” – vertical tab
- “\r” – carriage return
- ” ” – ordinary white space
Return Value:
A modified string with whitespaces or the specified characters removed from both sides is returned.
Code using PHP Trim:
The output for the above code snippet would be as follows:
Now let’s look at a case where we pass a second argument.
The output for this code snippet would be the following:
As you can see the “hir” from “Hire” and the “r” from “developer” were removed.
Closing thoughts — PHP trim():
There are no caveats as such while using the PHP trim() function. I would recommend practicing the trim() method as it can get tricky at times. Also, try using the ltrim() and rtrim() both these functions have very specific use cases.
Удаление лишних пробелов в PHP.
Обрабатывая информацию, собирая ее из разных источников, например с сайта поставщика, мы часто сталкиваемся с тем, что нам надо ее привести в достойный вид, удалив лишние пробелы.
Удаление пробелов в начале или конце строки.
Стандартные функция trim( string $str [, string $character_mask = » \t\n\r\0\x0B» ]) удаляет все возможные пробелы в начале или в конце строки, так же эта функция может удалять те символы, которые вам не нужны, например точку или запятую:
Так же есть 2 функции, ltrim и rtrim, которые работают так же как и trim, за исключением того , что ltrim удаляет символы в начале строки, а rtrim в конце.
Удаление лишних пробелов в самом тексте.
Иногда нужно удалить лишние пробелы, а иногда и табы, в самом тексте, например: «Купив телефон сегодня вы получите самый лучший подарок». В этом тексте после каждого слова стоит более 1 пробела, Попробуем заменить лишние через регулярное выражение:
В данном случае \s говорит что надо заменить все пробелы, а + включая табы на 1 пробел. Если вы считаете, что регулярные выражения зло, то можно использовать:
$str = str_replace(» «, » «, $str); while( strpos($str,» «)!==false)
Удаление «не удаляемых» пробелов.
Возможно вы столкнулись с такой проблемой, что ни одно из средств перечисленных выше не удаляет пробелы. Для начала рассмотрите внимательно текст, желательно в исходном коде, потому что текст « Купив телефон сегодня вы получите самый лучший подарок» может оказаться таким: « Купив телефон сегодня вы получите самый лучший подарок». Для начала надо заменить и просто на пробелы:
$str = str_replace('&', '&', $str); $str = str_replace(' ', ' ', $str);
А потом, применить один из способов, о котором я писал выше.
Хорошо, это мы сделали, но у нас остались лишние пробелы, которые не удаляются стандартными методами. Вероятнее всего это NO-BREAK SPACE, в таблице utf-8 символов он идет как c2 a0.
Для начала попробуйте перевести ваш текст в HEX:
echo bin2hex($str); echo substr_count($str, "\xc2\xa0");
и поищите там: c2a0, как видно на скриншоте, у меня аж 2 таких пробела
Удаление через регулярное выражение:
echo preg_replace('!\s++!u', ' ', $str);
Удаление без регулярного выражения:
$text = hex2bin(str_replace('c2a0', '20', bin2hex($str))); while( strpos($text,' ')!==false) < $text = str_replace(" ", " ", $text); >$text = trim($text);
переводим наш текс в HEX, заменяем NO-BREAK SPACE на обычный пробел, переводим обратно в обычный текст, после этого можно сделать замену пробелов и чистку.
Возможно у вас есть свой способ, может более практичный, как исправлять «не удаляемые» пробелы, то поделитесь в комментариях.
trim
Можно также задать список символов для удаления с помощью необязательного аргумента character_mask . Просто перечислите все символы, которые вы хотите удалить. Можно указать конструкцию .. для обозначения диапазона символов.
Возвращаемые значения
Примеры
Пример #1 Пример использования trim()
$text = «\t\tThese are a few words 🙂 . » ;
$binary = «\x09Example string\x0A» ;
$hello = «Hello World» ;
var_dump ( $text , $binary , $hello );
$trimmed = trim ( $text );
var_dump ( $trimmed );
$trimmed = trim ( $text , » \t.» );
var_dump ( $trimmed );
$trimmed = trim ( $hello , «Hdle» );
var_dump ( $trimmed );
$trimmed = trim ( $hello , ‘HdWr’ );
var_dump ( $trimmed );
// удаляем управляющие ASCII-символы с начала и конца $binary
// (от 0 до 31 включительно)
$clean = trim ( $binary , «\x00..\x1F» );
var_dump ( $clean );
Результат выполнения данного примера:
string(32) " These are a few words :) . " string(16) " Example string " string(11) "Hello World" string(28) "These are a few words :) . " string(24) "These are a few words :)" string(5) "o Wor" string(9) "ello Worl" string(14) "Example string"
Пример #2 Обрезание значений массива с помощью trim()
$fruit = array( ‘apple’ , ‘banana ‘ , ‘ cranberry ‘ );
var_dump ( $fruit );
array_walk ( $fruit , ‘trim_value’ );
var_dump ( $fruit );
Результат выполнения данного примера:
array(3) < [0]=>string(5) "apple" [1]=> string(7) "banana " [2]=> string(11) " cranberry " > array(3) < [0]=>string(5) "apple" [1]=> string(6) "banana" [2]=> string(9) "cranberry" >
Примечания
Замечание: Возможные трюки: удаление символов из середины строки
Так как trim() удаляет символы с начала и конца строки string , то удаление (или неудаление) символов из середины строки может ввести в недоумение. trim(‘abc’, ‘bad’) удалит как ‘a’, так и ‘b’, потому что удаление ‘a’ сдвинет ‘b’ к началу строки, что также позволит ее удалить. Вот почему это «работает», тогда как trim(‘abc’, ‘b’) очевидно нет.
Смотрите также
- ltrim() — Удаляет пробелы (или другие символы) из начала строки
- rtrim() — Удаляет пробелы (или другие символы) из конца строки
- str_replace() — Заменяет все вхождения строки поиска на строку замены
trim
Можно также задать список символов для удаления с помощью необязательного аргумента characters . Просто перечислите все символы, которые вы хотите удалить. Можно указать конструкцию .. для обозначения диапазона символов.
Возвращаемые значения
Примеры
Пример #1 Пример использования trim()
$text = «\t\tThese are a few words 🙂 . » ;
$binary = «\x09Example string\x0A» ;
$hello = «Hello World» ;
var_dump ( $text , $binary , $hello );
$trimmed = trim ( $text );
var_dump ( $trimmed );
$trimmed = trim ( $text , » \t.» );
var_dump ( $trimmed );
$trimmed = trim ( $hello , «Hdle» );
var_dump ( $trimmed );
$trimmed = trim ( $hello , ‘HdWr’ );
var_dump ( $trimmed );
// удаляем управляющие ASCII-символы с начала и конца $binary
// (от 0 до 31 включительно)
$clean = trim ( $binary , «\x00..\x1F» );
var_dump ( $clean );
Результат выполнения данного примера:
string(32) " These are a few words :) . " string(16) " Example string " string(11) "Hello World" string(28) "These are a few words :) . " string(24) "These are a few words :)" string(5) "o Wor" string(9) "ello Worl" string(14) "Example string"
Пример #2 Обрезание значений массива с помощью trim()
$fruit = array( ‘apple’ , ‘banana ‘ , ‘ cranberry ‘ );
var_dump ( $fruit );
array_walk ( $fruit , ‘trim_value’ );
var_dump ( $fruit );
Результат выполнения данного примера:
array(3) < [0]=>string(5) "apple" [1]=> string(7) "banana " [2]=> string(11) " cranberry " > array(3) < [0]=>string(5) "apple" [1]=> string(6) "banana" [2]=> string(9) "cranberry" >
Примечания
Замечание: Возможные трюки: удаление символов из середины строки
Так как trim() удаляет символы с начала и конца строки string , то удаление (или не удаление) символов из середины строки может ввести в недоумение. trim(‘abc’, ‘bad’) удалит как ‘a’, так и ‘b’, потому что удаление ‘a’ сдвинет ‘b’ к началу строки, что также позволит её удалить. Вот почему это «работает», тогда как trim(‘abc’, ‘b’) очевидно нет.
Смотрите также
- ltrim() — Удаляет пробелы (или другие символы) из начала строки
- rtrim() — Удаляет пробелы (или другие символы) из конца строки
- str_replace() — Заменяет все вхождения строки поиска на строку замены
User Contributed Notes 2 notes
note there is a behaviour change in php 8
You used to be able to say:
$p1 = trim($_POST[‘p1’]);
This will now throw deprecated warnings if parameter p1 is not set. It is better to say:
$p1 = trim($_POST[‘p1’]??»);
or
$p1 = isset($_POST[‘p1’]) ? trim($_POST[‘p1’]) : null;
or
$p1 = isset($_POST[‘p1’]) ? trim($_POST[‘p1’]) : »;
Note that trim() is not aware of Unicode points that represent whitespace (e.g., in the General Punctuation block), except, of course, for the ones mentioned in this page.
There is no Unicode-specific trim function in PHP at the time of writing (July 2023), but you can try some examples of trims using multibyte strings posted on the comments for the mbstring extension: https://www.php.net/manual/en/ref.mbstring.php
Как из строк убрать пробелы на PHP?
Работая с текстом, часто приходится его форматировать. Это необходимо для корректного вывода на экран и легкой читаемости. Это нужно, если пользователь вписывает некоторую информацию и допускает ошибки: вместо одного пробела указывает два, в начале ставит табуляцию. Есть несколько способов убрать пробелы в PHP.
Trim()
Функция Trim ищет лишние знаки в начале строки или в конце. Это:
Записывается в таком виде:
string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] )
$str – это обрабатываемая строка, а $character_mask – лишние символы. $character_mask является необязательным атрибутом.
Preg_replace
Функция для поиска и замены символов по регулярному выражению.
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
- $pattern – искомый шаблон.
- $replacement – символы для замены.
- $subject – обрабатываемый объект.
- $limit – количество производимых замен.
$pattern и $replacement могут быть массивами. В таком случае замена производится в соответствии с индексами.
Str_replace()
Убрать пробелы из строки в PHP можно методом str_replace(). Он заменяет все вхождения строки поиска на строку замены.
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
Используется в качестве упрощенного метода preg_replace().
- $search – значение, которое необходимо найти.
- $replace – заменяемая строка.
- $subject – объект, в котором производится поиск и замена.
- $count устанавливает количество замен.
$bodytag = str_replace("%body%", "black", ""); // присваивает: Hll Wrld f PHP $vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"); $onlyconsonants = str_replace($vowels, "", "Hello World of PHP"); // присваивает: You should eat pizza, beer, and ice cream every day $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); $newphrase = str_replace($healthy, $yummy, $phrase); // присваивает: 2 $str = str_replace("ll", "", "good golly miss molly!", $count); echo $count; ?>
Пример поиска и замены пробелов
Эти функции применяются в большинстве ситуаций, даже в более сложных.
Например, пользователь ввел некоторые данные, которые позже будут напечатаны на экране. Для улучшения читабельности и восприятия текста в целом эту информацию нужно обработать – убрать повторяющиеся пробелы, заменить их на одинарные.
$text1 = "Длинный объемный текст с лишние пробелами";
В данном случае видно, что между словами находится по два и три пробела. Порядок действий, как убрать пробелы в PHP, следующий.
1. Для начала нужно превратить строку в массив строк с помощью функции.
В качестве разделителя используется один пробел. Таким образом, части тела, которые не являются отдельными элементами массива, будут содержать на один пробел меньше.
2. В результате получается такой массив строк:
$array = ["Длинный “, “объемный”, “текст”, “с “, “лишние пробелами"]
3. Каждый элемент обрабатывается функцией:
Для поиска одного и большего количества пробелов используется регулярное выражение /\s+/. Все найденные совпадения заменяются строкой ‘ ‘. Поиск осуществляется в переменной $text1.
4. В результате получаем строку с правильным количеством пробелов, которая легко воспринимается пользователем.