Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Trim в php

Trim в php

(PHP 4, PHP 5, PHP 7)

trim — Удаляет пробелы (или другие символы) из начала и конца строки

Описание

Список параметров

Можно также задать список символов для удаления с помощью необязательного аргумента character_mask . Просто перечислите все символы, которые вы хотите удалить. Можно указать конструкцию .. для обозначения диапазона символов.

Возвращаемые значения

Примеры

Пример #1 Пример использования trim()

= «ttThese are a few words 🙂 . » ;
$binary = «x09Example stringx0A» ;
$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 );

Результат выполнения данного примера:

Пример #2 Обрезание значений массива с помощью trim()

$fruit = array( ‘apple’ , ‘banana ‘ , ‘ cranberry ‘ );
var_dump ( $fruit );

array_walk ( $fruit , ‘trim_value’ );
var_dump ( $fruit );

Результат выполнения данного примера:

Примечания

Замечание: Возможные трюки: удаление символов из середины строки

Так как trim() удаляет символы с начала и конца строки string , то удаление (или неудаление) символов из середины строки может ввести в недоумение. trim(‘abc’, ‘bad’) удалит как ‘a’, так и ‘b’, потому что удаление ‘a’ сдвинет ‘b’ к началу строки, что также позволит ее удалить. Вот почему это «работает», тогда как trim(‘abc’, ‘b’) очевидно нет.

Смотрите также

  • ltrim() — Удаляет пробелы (или другие символы) из начала строки
  • rtrim() — Удаляет пробелы (или другие символы) из конца строки
  • str_replace() — Заменяет все вхождения строки поиска на строку замены

Коментарии

To remove multiple occurences of whitespace characters in a string an convert them all into single spaces, use this:

= preg_replace ( ‘/s+/’ , ‘ ‘ , $text );

If you want to check whether something ONLY has whitespaces, use the following:

if ( trim ( $foobar )== » ) <
echo ‘The string $foobar only contains whitespace!’ ;
>

Non-breaking spaces can be troublesome with trim:

// turn some HTML with non-breaking spaces into a «normal» string
$myHTML = » abc» ;
$converted = strtr ( $myHTML , array_flip ( get_html_translation_table ( HTML_ENTITIES , ENT_QUOTES )));

// this WILL NOT work as expected
// $converted will still appear as » abc» in view source
// (but not in od -x)
$converted = trim ( $converted );

// are translated to 0xA0, so use:
$converted = trim ( $converted , «xA0» ); // >
// UTF encodes it as chr(0xC2).chr(0xA0)
$converted = trim ( $converted , chr ( 0xC2 ). chr ( 0xA0 )); // should work

// PS: Thanks to John for saving my sanity!
?>

Trim full width space will return mess character, when target string starts with ‘《’

php version 5.4.27

[EDIT by cmb AT php DOT net: it is not necessarily safe to use trim with multibyte character encodings. The given example is equivalent to echo trim(«xe3808a», «xe3x80x80»).]

Standard trim() functions can be a problematic when come HTML entities. That’s why i wrote «Super Trim» function what is used to handle with this problem and also you can choose is trimming from the begin, end or booth side of string.
function strim ( $str , $charlist = » » , $option = 0 ) <
if( is_string ( $str ))
<
// Translate HTML entities
$return = strtr ( $str , array_flip ( get_html_translation_table ( HTML_ENTITIES , ENT_QUOTES )));
// Remove multi whitespace
$return = preg_replace ( «@s+s@Ui» , » » , $return );
// Choose trim option
switch( $option )
<
// Strip whitespace (and other characters) from the begin and end of string
default:
case 0 :
$return = trim ( $return , $charlist );
break;
// Strip whitespace (and other characters) from the begin of string
case 1 :
$return = ltrim ( $return , $charlist );
break;
// Strip whitespace (and other characters) from the end of string
case 2 :
$return = rtrim ( $return , $charlist );
break;

if you are using trim and you still can’t remove the whitespace then check if your closing tag inside the html document is NOT at the next line.

there should be no spaces at the beginning and end of your echo statement, else trim will not work as expected.

trim is the fastest way to remove first and last char.

Benchmark comparsion 4 different ways to trim string with ‘/’
4 functions with the same result — array exploded by ‘/’

print cycle ( «str_preg(‘$s’);» , $times );
print cycle ( «str_preg2(‘$s’);» , $times );
print cycle ( «str_sub_replace(‘$s’);» , $times );
print cycle ( «str_trim(‘$s’);» , $times );
print cycle ( «str_clear(‘$s’);» , $times );

function cycle ( $function , $times ) <
$count = 0 ;
if( $times 1 ) <
return false ;
>
$start = microtime ( true );
while( $times > $count ) <
eval( $function );
$count ++;
>
$end = microtime ( true ) — $start ;
return «n $function exec time: $end» ;
>

function str_clear ( $s ) <
$s = explode ( ‘/’ , $s );
$s = array_filter ( $s , function ( $s ));
return $s ;
>

function str_preg2 ( $s ) <
$s = preg_replace ( ‘/((? , » , $s );
$s = explode ( ‘/’ , $s );
return $s ;
>

function str_preg ( $s ) <
$s = preg_replace ( ‘/^(/?)(.*?)(/?)$/i’ , ‘$2’ , $s );
$s = explode ( ‘/’ , $s );
return $s ;
>

function str_sub_replace ( $s ) <
$s = str_replace ( ‘/’ , » , mb_substr ( $s , 0 , 1 )) . mb_substr ( $s , 1 , — 1 ) . str_replace ( ‘/’ , » , mb_substr ( $s , — 1 ));
$s = explode ( ‘/’ , $s );
return $s ;
>

function str_trim ( $s ) <
$s = trim ( $s , ‘/’ );
$s = explode ( ‘/’ , $s );
return $s ;
>

Читать еще:  Нуллифицировать member php action profile

When specifying the character mask,
make sure that you use double quotes

= »
Hello World » ; //here is a string with some trailing and leading whitespace

$trimmed_correct = trim ( $hello , » tnr» ); // $trimmed_incorrect = trim ( $hello , ‘ tnr’ ); // print( «—————————-» );
print( «TRIMMED OK:» . PHP_EOL );
print_r ( $trimmed_correct . PHP_EOL );
print( «—————————-» );
print( «TRIMMING NOT OK:» . PHP_EOL );
print_r ( $trimmed_incorrect . PHP_EOL );
print( «—————————-» . PHP_EOL );
?>

Here is the output:

Simple Example I hope you will understand easily:

// Inserting empty variable;

if( !(empty( $name )) )
<
$sql = «INSERT INTO `users`( name ) VALUE( ‘$name’ );» ;
>

// But is not empty that will be inserted but space

if( !(empty( $name )) )
<
$sql = «INSERT INTO `users`( name ) VALUE( ‘$name’ );» ;
>

// Now that will not be inserted by using trim() function

if( !(empty( trim ( $name ) )) )
<
$sql = «INSERT INTO `users`( name ) VALUE( ‘$name’ );» ;
>

Beware with trimming apparently innocent characters. It is NOT a Unicode-safe function:

echo trim ( ‘≈ [Approximation sign]’ , ‘– [en-dash]’ ); // �� [Approximation sig
?>

The en-dash here is breaking the Unicode characters.

And also prevents the open-square-bracket from being seen as part of the characters to trim on the left side, letting it untouched in the resulting string.

It is worth mentioning that trim, ltrim and rtrim are NOT multi-byte safe, meaning that trying to remove an utf-8 encoded non-breaking space for instance will result in the destruction of utf-8 characters than contain parts of the utf-8 encoded non-breaking space, for instance:

non breaking-space is «u» or «xc2xa0» in utf-8, «µ» is «u» or «xc2xb5» in utf-8 and «à» is «u» or «xc3xa0» in utf-8

$input = «uµ déjàu«; // » µ déjà »
$output = trim($input, «u«); // «▒ déj▒» or whatever how the interpretation of broken utf-8 characters is performed

$output got both «u» characters removed but also both «µ» and «à» characters destroyed

Trim в php

(PHP 4, PHP 5, PHP 7)

trim — Удаляет пробелы (или другие символы) из начала и конца строки

Описание

Список параметров

Можно также задать список символов для удаления с помощью необязательного аргумента character_mask . Просто перечислите все символы, которые вы хотите удалить. Можно указать конструкцию .. для обозначения диапазона символов.

Возвращаемые значения

Примеры

Пример #1 Пример использования trim()

= «ttThese are a few words 🙂 . » ;
$binary = «x09Example stringx0A» ;
$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 );

Результат выполнения данного примера:

Пример #2 Обрезание значений массива с помощью trim()

$fruit = array( ‘apple’ , ‘banana ‘ , ‘ cranberry ‘ );
var_dump ( $fruit );

array_walk ( $fruit , ‘trim_value’ );
var_dump ( $fruit );

Результат выполнения данного примера:

Примечания

Замечание: Возможные трюки: удаление символов из середины строки

Так как trim() удаляет символы с начала и конца строки string , то удаление (или неудаление) символов из середины строки может ввести в недоумение. trim(‘abc’, ‘bad’) удалит как ‘a’, так и ‘b’, потому что удаление ‘a’ сдвинет ‘b’ к началу строки, что также позволит ее удалить. Вот почему это «работает», тогда как trim(‘abc’, ‘b’) очевидно нет.

Смотрите также

  • ltrim() — Удаляет пробелы (или другие символы) из начала строки
  • rtrim() — Удаляет пробелы (или другие символы) из конца строки
  • str_replace() — Заменяет все вхождения строки поиска на строку замены

User Contributed Notes 16 notes

When specifying the character mask,
make sure that you use double quotes

= »
Hello World » ; //here is a string with some trailing and leading whitespace

$trimmed_correct = trim ( $hello , » tnr» ); // $trimmed_incorrect = trim ( $hello , ‘ tnr’ ); // print( «—————————-» );
print( «TRIMMED OK:» . PHP_EOL );
print_r ( $trimmed_correct . PHP_EOL );
print( «—————————-» );
print( «TRIMMING NOT OK:» . PHP_EOL );
print_r ( $trimmed_incorrect . PHP_EOL );
print( «—————————-» . PHP_EOL );
?>

Here is the output:

Non-breaking spaces can be troublesome with trim:

// turn some HTML with non-breaking spaces into a «normal» string
$myHTML = » abc» ;
$converted = strtr ( $myHTML , array_flip ( get_html_translation_table ( HTML_ENTITIES , ENT_QUOTES )));

// this WILL NOT work as expected
// $converted will still appear as » abc» in view source
// (but not in od -x)
$converted = trim ( $converted );

// are translated to 0xA0, so use:
$converted = trim ( $converted , «xA0» ); // >
// UTF encodes it as chr(0xC2).chr(0xA0)
$converted = trim ( $converted , chr ( 0xC2 ). chr ( 0xA0 )); // should work

// PS: Thanks to John for saving my sanity!
?>

It is worth mentioning that trim, ltrim and rtrim are NOT multi-byte safe, meaning that trying to remove an utf-8 encoded non-breaking space for instance will result in the destruction of utf-8 characters than contain parts of the utf-8 encoded non-breaking space, for instance:

non breaking-space is «u» or «xc2xa0» in utf-8, «µ» is «u» or «xc2xb5» in utf-8 and «à» is «u» or «xc3xa0» in utf-8

Читать еще:  Подключение к серверу php

$input = «uµ déjàu«; // » µ déjà «
$output = trim($input, «u«); // «▒ déj▒» or whatever how the interpretation of broken utf-8 characters is performed

$output got both «u» characters removed but also both «µ» and «à» characters destroyed

To remove multiple occurences of whitespace characters in a string an convert them all into single spaces, use this:

trim is the fastest way to remove first and last char.

Benchmark comparsion 4 different ways to trim string with ‘/’
4 functions with the same result — array exploded by ‘/’

print cycle ( «str_preg(‘ $s ‘);» , $times );
print cycle ( «str_preg2(‘ $s ‘);» , $times );
print cycle ( «str_sub_replace(‘ $s ‘);» , $times );
print cycle ( «str_trim(‘ $s ‘);» , $times );
print cycle ( «str_clear(‘ $s ‘);» , $times );

function cycle ( $function , $times ) <
$count = 0 ;
if( $times 1 ) <
return false ;
>
$start = microtime ( true );
while( $times > $count ) <
eval( $function );
$count ++;
>
$end = microtime ( true ) — $start ;
return «n $function exec time: $end » ;
>

function str_clear ( $s ) <
$s = explode ( ‘/’ , $s );
$s = array_filter ( $s , function ( $s ));
return $s ;
>

function str_preg2 ( $s ) <
$s = preg_replace ( ‘/((? , » , $s );
$s = explode ( ‘/’ , $s );
return $s ;
>

function str_preg ( $s ) <
$s = preg_replace ( ‘/^(/?)(.*?)(/?)$/i’ , ‘$2’ , $s );
$s = explode ( ‘/’ , $s );
return $s ;
>

function str_sub_replace ( $s ) <
$s = str_replace ( ‘/’ , » , mb_substr ( $s , 0 , 1 )) . mb_substr ( $s , 1 , — 1 ) . str_replace ( ‘/’ , » , mb_substr ( $s , — 1 ));
$s = explode ( ‘/’ , $s );
return $s ;
>

function str_trim ( $s ) <
$s = trim ( $s , ‘/’ );
$s = explode ( ‘/’ , $s );
return $s ;
>

Trim full width space will return mess character, when target string starts with ‘《’

php version 5.4.27

[EDIT by cmb AT php DOT net: it is not necessarily safe to use trim with multibyte character encodings. The given example is equivalent to echo trim(«xe3808a», «xe3x80x80»).]

if you are using trim and you still can’t remove the whitespace then check if your closing tag inside the html document is NOT at the next line.

there should be no spaces at the beginning and end of your echo statement, else trim will not work as expected.

Standard trim() functions can be a problematic when come HTML entities. That’s why i wrote «Super Trim» function what is used to handle with this problem and also you can choose is trimming from the begin, end or booth side of string.
function strim ( $str , $charlist = » » , $option = 0 ) <
if( is_string ( $str ))
<
// Translate HTML entities
$return = strtr ( $str , array_flip ( get_html_translation_table ( HTML_ENTITIES , ENT_QUOTES )));
// Remove multi whitespace
$return = preg_replace ( «@s+s@Ui» , » » , $return );
// Choose trim option
switch( $option )
<
// Strip whitespace (and other characters) from the begin and end of string
default:
case 0 :
$return = trim ( $return , $charlist );
break;
// Strip whitespace (and other characters) from the begin of string
case 1 :
$return = ltrim ( $return , $charlist );
break;
// Strip whitespace (and other characters) from the end of string
case 2 :
$return = rtrim ( $return , $charlist );
break;

Beware with trimming apparently innocent characters. It is NOT a Unicode-safe function:

echo trim ( ‘≈ [Approximation sign]’ , ‘– [en-dash]’ ); // �� [Approximation sig
?>

The en-dash here is breaking the Unicode characters.

And also prevents the open-square-bracket from being seen as part of the characters to trim on the left side, letting it untouched in the resulting string.

If you want to check whether something ONLY has whitespaces, use the following:

if ( trim ( $foobar )== » ) <
echo ‘The string $foobar only contains whitespace!’ ;
>

Simple Example I hope you will understand easily:

// Inserting empty variable;

if( !(empty( $name )) )
<
$sql = «INSERT INTO `users`( name ) VALUE( ‘ $name ‘ );» ;
>

// But is not empty that will be inserted but space

if( !(empty( $name )) )
<
$sql = «INSERT INTO `users`( name ) VALUE( ‘ $name ‘ );» ;
>

// Now that will not be inserted by using trim() function

if( !(empty( trim ( $name ) )) )
<
$sql = «INSERT INTO `users`( name ) VALUE( ‘ $name ‘ );» ;
>

Использование функции trim (PHP)

Используемая кодировка символов имеет важное значение. В любой кодировке есть код символа, есть его семантика для программиста и для пользователя.

Символ для программиста имеет значение в контексте алгоритма и в смысле того, что следует вывести пользователю. Код символа — это то, что обозначает это различие.

Синтаксис и смысл функции trim (PHP)

Обычно имеет значение слово, фраза, символьная конструкция, но не всегда имеют значение незначащие нули или символы. Нули спереди числа не имеют значения для числа и используются только для целей выравнивания числовой информации. Нули до первого символа строки символов и после последнего также не имеют значения, как и пробелы, табуляция, перевод строки и другие «непечатаемые» символы.

Функция trim в PHP имеет три варианта: trim, ltrim и rtrim. Первая убирает незначащие символы с начала строки и с ее конца. Вторая — только с начала. Третья — только с конца.

Функция trim в PHP имеет два параметра: первый — строка, над которой выполняется действие, второй — список символов, которые нужно удалить. Специальные символы указываются кодами, а обычные — как есть. Допускается указание диапазона: «x11..x22».

Следует отметить, что trim в PHP без второго параметра удаляет незначащие (непечатаемые) специальные символы, включая пробел. Указание перечня удаляемых символов не имеет никакого отношения к пробелам и специальным символам, если они не указаны.

Читать еще:  Php socket set option

В последнем примере показано, что исходная строка ‘yy x20x18x yzx’ дает результат как с пробелами, так и с символом ‘x’, который находится внутри строки.

Использование функции trim для обработки строк

При современной производительности компьютерного оборудования все строковые функции по скорости равны, но в каждом конкретном случае при обработке существенно больших объемов информации имеет смысл сопоставить различные алгоритмы, использующие различные строковые функции, а затем выбрать оптимальный вариант.

Обычно программист использует strpos и substr или str_replace, чтобы выполнить преобразование строки и получить нужный результат. Почему не использовать trim PHP? Эта функция по своему синтаксическому назначению не ограничивает программиста в использовании.

Оператор сравнения if или конструкция switch используются для выбора нужного направления в алгоритме, но условие, которым они располагают, может динамично изменяться посредством trim. PHP не ограничивает разработчика ни в первом параметре, ни во втором, не запрещает результат работы функции дополнять на месте получения.

Хорошим примером может служить использование обычных массивов для преобразования десятичных цифр в шестнадцатеричные. Если просто добавить в пустой массив все шестнадцатеричные цифры в порядке возрастания, то получится прямое соответствие десятичных индексов их шестнадцатеричным значениям.

При обработке символов посредством функции trim PHP также не накладывает никаких ограничений. Правильно составив второй параметр, можно ступенчато изменять содержание первого параметра, использовать его в качестве условия для выбора направления работы алгоритма.

Стек, рекурсия и PHP trim

Стековая обработка является перспективной. Шансов, что она когда-либо покинет спектр самых востребованных идей в разработке алгоритмов, очень мало. Уровень рекурсивности функции, то есть ее способности вызывать саму себя без каких-либо ограничений, — это критерий качества функции.

Реализация trim на PHP — хорошее подспорье для реализации современных идей. Эта функция работает строго последовательно по краям исходной строки, она допускает посимвольную обработку и может исполняться как алгоритм управления процессами более высокого уровня.

PHP Trim Example | trim() Function In PHP Tutorial

PHP Trim Example | trim() Function In PHP Tutorial is today’s topic. The trim() function Strip whitespace (or other characters) from the beginning and end of a string. The trim() function returns the string with a whitespace stripped from a beginning and end of the string. Without a second parameter, trim() will strip these characters.

PHP Trim Example

It removes the characters from both sides of the string. See the following syntax of PHP trim() function.

The string parameter is required which specifies the string to check.

The charlist parameter is optional, and it specifies the characters that are to be removed from the string. If this is not mentioned, then all of the following characters will be removed:

  1. “” – NULL
  2. “t” – tab
  3. “n” – a new line
  4. “x0B” – vertical tab
  5. “r” – carriage return
  6. ” ” – ordinary white space

See the following code example.

See the following output.

#Trimming array values with trim()

Let’s trim the array values. See the following code.

In the above code, we have defined the function called trim_array_value() which returns the trimmed value and then we have created an array using the PHP array_walk() function from that value and print it on the console. Now, see the output.

You can see that in the output that Eleven string does not have any white space.

Because the trim() trims characters from a beginning and end of the string , it may be confusing when the characters are (or are not) removed from the middle. The trim(‘abc’, ‘bad’) function removes both ‘a’ and ‘b’ because it trims ‘a’ thus moving ‘b’ to the beginning also to be trimmed.

Please, note that trim() returns an empty string when the argument is an unset/null variable.

When specifying a character mask, make sure that you use double-quotes.

See the following output.

#Second way to trim all the elements of an array

We can use the PHP array_map() function to trim all the items from the array.

See the following output.

#Remove multiple occurrences of whitespace characters

If you want to remove the multiple occurrences of whitespace characters in a string an convert them all into single spaces, use the following code.

See the following output.

Some times, the strings you are working with will have unwanted whitespace in the middle and the beginning as well as in the end. The trimming function will be ineffective against it.

If you want to remove all the whitespace characters irrespective of where they occur in the string, you should use str_replace() to replace all their occurrences with a blank string.

See the following example.

#Remove the Last Character from String

We can remove the last character from the string using the substr and mb_substr function. See the following code.

Okay, now see the following output.

Finally, PHP Trim Example | trim() Function In PHP Tutorial is over.

Krunal Lathiya is From India, and he is an Information Technology Engineer. By profession, he is the latest web and mobile technology adapter, freelance developer, Machine Learning, Artificial Intelligence enthusiast, and primary Author of this blog.

Ссылка на основную публикацию
Adblock
detector