- Удаление лишних пробелов в PHP.
- Удаление пробелов в начале или конце строки.
- Удаление лишних пробелов в самом тексте.
- Удаление «не удаляемых» пробелов.
- trim
- Возвращаемые значения
- Примеры
- Примечания
- Смотрите также
- PHP trim() Function
- Definition and Usage
- Syntax
- Parameter Values
- Technical Details
- More Examples
- Example
- Example
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
- Php обрезать строку пробелы
- Синтаксис trim в php
- Разберем синтаксис trim в php
- trim() удаляет следующие символы по умолчанию:
- Пример использования trim в php
- Синтаксис array_trim
- Разберем синтаксис array trim
- Как работает array_trim
Удаление лишних пробелов в 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() — Заменяет все вхождения строки поиска на строку замены
PHP trim() Function
Remove characters from both sides of a string («He» in «Hello» and «d!» in «World»):
Definition and Usage
The trim() function removes whitespace and other predefined characters from both sides of a string.
- ltrim() — Removes whitespace or other predefined characters from the left side of a string
- rtrim() — Removes whitespace or other predefined characters from the right side of a string
Syntax
Parameter Values
- «\0» — NULL
- «\t» — tab
- «\n» — new line
- «\x0B» — vertical tab
- «\r» — carriage return
- » » — ordinary white space
Technical Details
Return Value: | Returns the modified string |
---|---|
PHP Version: | 4+ |
Changelog: | The charlist parameter was added in PHP 4.1 |
More Examples
Example
Remove whitespaces from both sides of a string:
The HTML output of the code above will be (View Source):
Without trim: Hello World!
With trim: Hello World!