Strings

Strings podem ser especificadas usando-se um dos dois conjuntos de delimitadores.

Se a string está englobada entre aspas ("), as variáveis dentro da string serão expandidas (sujeitas a algumas limitações de análise). Como em C e em Perl, a barra invertida ("\") pode ser usada para especificar caracteres especiais:

Tabela 6-1. Caracteres de escape

sequencemeaning
\nnova linha
\rretorno de carro
\ttabulação horizontal
\\barra invertida
\$cifrão
\"aspas
\[0-7]{1,3} a sequência de caracteres que casa com a expressão regular é um caractere na notação octal
\x[0-9A-Fa-f]{1,2} a sequência de caracteres que casa com a expressão regular é um caractere na notação hexadecimal

Você pode escapar qualquer outro caractere, mas um alerta será emitido no nível mais alto de alertas.

A segunda maneira de delimitar uma string usa o apóstrofe ("'"). Quando uma string é englobada por apóstrofes, os únicos escapes que serão entendidos são "\\" e "\'". Isto é por conveniência, de forma que você tenha apóstrofes e barras invertidas em uma string com apóstrofes. As variáveis não serão expandidas dentro de uma string com apóstrofes.

Outra maneira de delimitar strings é pelo uso da sintaxe 'here doc' ("<<<"). Alguém deve fornecer um identificador depois de <<<, depois a string, e então o mesmo identificador para fechar a citação. O identificador de fechamento precisa começar na primeira coluna da linha.

Exemplo 6-1. Exemplo de citação de string 'here doc'


$str = <<<EOD
Exemplo de string
dividida em múltiplas linhas 
usando a sintaxe 'heredoc'.
EOD;
     

Nota: Suporte a 'here doc' foi acrescentado no PHP 4.

Strings podem ser concatenadas usando-se o operador '.' (ponto). Note que o operador '+' (adição) não funcionará para isso. Por favor veja Operadores de string para mais informações.

Caracteres dentro de strings podem ser acessados pelo tratamento da string como uma matriz de caracteres indexadas numericamente, usando a sintaxe no estilo C. Veja alguns exemplos abaixo.

Exemplo 6-2. Alguns exemplos de string


<?php
/* Atribuindo uma string. */
$str = "Isto é uma string";

/* Acrescentando a ela. */
$str = $str . " com mais um pouco de texto";

/* Outra maneira de acrescentar, inclui uma nova linha com escape. */
$str .= " e uma nova linha no fim.\n";

/* Esta string terminará sendo '<p>Número: 9</p>' */
$num = 9;
$str = "<p>Número: $num</p>";

/* Esta será '<p>Número: $num</p>' */
$num = 9;
$str = '<p>Number: $num</p>';

/* Obtém o primeiro caractere da string  */
$str = 'Isto é um teste.';
$first = $str[0];

/* Obtém o último caractere de uma string. */
$str = 'Isto ainda é um teste.';
$last = $str[strlen($str)-1];
?>	  
     

Conversão de String

Quando uma string é avaliada como um valor numérico, o valor resultante e o tipo são determinados como se segue.

A string será avaliada como um 'double' se contiver qualquer um dos caracteres '.', 'e', ou 'E'. Caso contrário, será avaliada como um inteiro.

O valor é dado pela porção inicial da string. Se a string começa com dados numéricos válidos, estes serão o valor usado. Caso contrário, o valor será 0 (zero). Dados numéricos válidos são um sinal opcional, seguido por um ou mais dígitos (opcionalmente contendo um ponto decimal), seguido por um expoente opcional. O expoente é um 'e' ou 'E' seguido por um ou mais dígitos.

Quando a primeira expressão é uma string, o tipo de variável dependerá da segunda expressão.


$foo = 1 + "10.5";              // $foo é 'double' (11.5)
$foo = 1 + "-1.3e3";            // $foo é 'double' (-1299)
$foo = 1 + "bob-1.3e3";         // $foo é inteiro (1)
$foo = 1 + "bob3";              // $foo é inteiro (1)
$foo = 1 + "10 porquinhos";     // $foo é inteiro (11)
$foo = 1 + "10 porquinhos";     // $foo é inteiro (11)
$foo = "10.0 porcos " + 1;      // $foo é inteiro (11)
$foo = "10.0 porcos " + 1.0;    // $foo é 'double' (11)     
     

Para mais informações sobre esta conversão, veja a página de manual de strtod(3).

Se você gostaria de testar qualquer um dos exemplos desta seção, você pode cortar e colar os exemplos e inserir a seguinte linha para ver, por você mesmo, o que está acontecendo:


echo "o tipo de \$foo==$foo; é " . gettype ($foo) . "<br>\n";