Statement on glibc/iconv Vulnerability

trim

(PHP 4, PHP 5, PHP 7, PHP 8)

trimRetira espaço (ou outros caracteres) do início e do final de uma string

Descrição

trim(string $string, string $characters = " \n\r\t\v\x00"): string

Esta função retorna uma string com os espaços retirados do ínicio e do final de string. Sem o segundo parâmetro, trim() irá retirar estes caracteres

  • " " (ASCII 32 (0x20)), um espaço normal.
  • "\t" (ASCII 9 (0x09)), uma tabulação.
  • "\n" (ASCII 10 (0x0A)), uma linha nova (alimentação de linha).
  • "\r" (ASCII 13 (0x0D)), um retono de carro.
  • "\0" (ASCII 0 (0x00)), o byte NUL.
  • "\v" (ASCII 11 (0x0B)), uma tabulação vertical.

Parâmetros

string

A string que será modificada.

characters

Opcionalmente, os caracteres removidos pode também ser especificados usando o parâmetro characters. Simplesmente liste todos os caracteres que você quer retirar. Com .. você pode especificar um intervalo de caracteres.

Valor Retornado

A string com caracteres removidos.

Exemplos

Exemplo #1 Exemplo de uso de trim()

<?php

$text
= "\t\tThese are a few words :) ... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World";
var_dump($text, $binary, $hello);

print
"\n";

$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);

// retira os caracteres ASCII de controle no início e fim de $binary
// (de 0 a 31 inclusive)
$clean = trim($binary, "\x00..\x1F");
var_dump($clean);

?>

O exemplo acima produzirá:

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"

Exemplo #2 Usando trim() em valores de array

<?php
function trim_value(&$value)
{
$value = trim($value);
}

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

array_walk($fruit, 'trim_value');
var_dump($fruit);

?>

O exemplo acima produzirá:

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"
}

Notas

Nota: Possível armadilha: removendo caracteres no meio da string

Como trim() retira caracteres do início de do fim de uma string, pode ser confuso quando caracteres são (ou não) removidos do meio. trim('abc', 'bad') remove tanto 'a' quanto 'b' porque ele retira 'a', portanto move 'b' para o início e também será retirado. Portanto, este é o motivo pelo qual isso "funciona" enquanto que trim('abc', 'b') aparentemente não funciona.

Veja Também

  • ltrim() - Retira espaços em branco (ou outros caracteres) do início de uma string
  • rtrim() - Retira espaço em branco (ou outros caracteres) do final de uma string
  • str_replace() - Substitui todas as ocorrências da string de pesquisa com a string de substituição

add a note

User Contributed Notes 3 notes

up
12
pcoates at yukon1000 dot com
11 months ago
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']) : '';
up
1
gwyneth dot llewelyn at gwynethllewelyn dot net
9 months ago
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
up
0
zoad_aish at gmail dot com
2 hours ago
I wanted to bring to your attention a peculiar behavior in PHP that might catch some of us off guard, particularly when dealing with string manipulation.

When using the trim() function in PHP with a variable assigned as null, the result might not be what you expect. Instead of returning null, trim() will actually return an empty string "".

Here's a quick example to illustrate:
$txt = null;
var_dump($txt); // Outputs: NULL
$txt = trim($txt);
echo "<br>";
var_dump($txt); // Outputs: string(0) ""

As you can see, even though the initial value of $txt is null, after applying trim(), it becomes an empty string "".

This behavior might seem counterintuitive at first, so it's important to keep it in mind, especially when handling user input or dealing with data that might contain null values.

Understanding these nuances can save us from unexpected bugs and make our code more robust.
To Top