Observe que o lrtim removerá tudo :::::. Às vezes, esse não é o comportamento desejado.
CR
5
observe que isso é destinado apenas a caracteres únicos. O ltrim cortará todos os caracteres da string fornecida: ltrim('prefixprefix_postfix', 'prefix')resulta em'_postfix';
Esteja ciente do unicode. Se você estiver lidando com uma string arbitrária (por exemplo, "Ål <- dinamarquês para enguia"), use mb_substr e especifique a codificação.
Thomas Jensen
essa não é uma implementação correta, não está funcionando com a cadeia de caracteres únicos "a". se você tentar cadeia de caracteres única, substr retorna um valor booleano
anru
2
@anru O manual indica se o comprimento da string é igual ao parâmetro start, uma string vazia será retornada. Antes da versão 7, falsefoi retornado. Então, você precisa verificar se eles são iguais, se esse não é o comportamento que você deseja.
Obrigado. Veja minha atualização, no entanto. Isso causou um problema para mim ao usar a string atualizada em uma consulta SQL.
rybo111
6
Eu apenas tentei a $str[0] = '';solução e não funcionou. bem, no entanto, se você planeja usar a variável, por exemplo, para comparar >ou <ela não funcionará. Ainda conta `` como + `por exemplo $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ian
@Ian: Me deparei com o mesmo problema ao buscar registros de uma API usando uma palavra-chave, tentei var_dump($keyword)mostrar o tamanho do caractere anterior ... tentei aparar a palavra-chave e funcionou bem var_dump(trim($keyword)).. Espero que isso ajude alguém .. :)
Syed Qarib 08/0315
3
Isso não funciona. A posição "removida" é substituída por byte nulo, para que você obtenha "\ 0hello" em vez de "hello".
Josef Kufner
1
Recebo "Aviso: não é possível atribuir uma string vazia a um deslocamento de string" por $ str [0] = "";
Depois de mais testes, não recomendo mais usar isso. Isso causou um problema para mim ao usar a string atualizada em uma consulta MySQL e alterar para substrcorrigir o problema. Pensei em excluir esta resposta, mas os comentários sugerem que é mais rápido, de alguma forma, para que alguém possa usá-la. Você pode achar que aparar a string atualizada resolve problemas de comprimento da string.
Às vezes você não precisa de uma função:
$str[0]='';
Por exemplo:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Este método modifica a cadeia existente em vez de criar outra.
@EmanuilRusev como assim? Apenas curioso, se você quer dizer que é mais rápido digitar ou roda mais rápido.
precisa saber é o seguinte
Quero dizer que corre mais rapidamente.
Emanuil Rusev
@EmanuilRusev Eu estaria interessado se você pudesse fornecer algumas estatísticas, pois adicionarei à resposta.
precisa saber é o seguinte
1
Tem que ter cuidado com isso. O código abaixo gera bool (false). $ foo = 'livro'; $ bar = 'livro'; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
thoughtrepo
8
A resposta aceita:
$str = ltrim($str,':');
funciona, mas removerá vários :quando houver mais de um no início.
Apara as ocorrências de todas as palavras de uma matriz desde o início e o final de uma sequência de caracteres + espaço em branco e, opcionalmente, caracteres únicos extras, conforme o corte normal ()
<?php
function trim_words($what, $words, $char_list =''){if(!is_array($words))returnfalse;
$char_list .=" \t\n\r\0\x0B";// default trim chars
$pattern ="(".implode("|", array_map('preg_quote', $words)).")\b";
$str = trim(preg_replace('~'.$pattern.'$~i','', preg_replace('~^'.$pattern.'~i','', trim($what, $char_list))), $char_list);return $str;}// for example:
$trim_list = array('AND','OR');
$what =' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list));// => "x = 1 AND b = 2"
$what =' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list,','));// => "ORDER BY x DESC, b ASC"?>
este não está funcionando com cadeia de caracteres únicos: como "a"
anru 26/10/2015
Você está certo =) Portanto, acredite que uma solução possível seria testar antes de conter apenas um caractere. Por exemplo: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; Ou $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; porque a idéia é remover o último caractere, se você tiver apenas um ...: P
Respostas:
Para remover todos
:
os itens desde o início de uma string, você pode usar ltrim :fonte
:::::
. Às vezes, esse não é o comportamento desejado.ltrim('prefixprefix_postfix', 'prefix')
resulta em'_postfix';
A
substr()
função provavelmente o ajudará aqui:As strings são indexadas a partir de 0 e este segundo parâmetro de funções assume o cutstart. Portanto, faça 1 e o primeiro caractere desapareceu.
fonte
false
foi retornado. Então, você precisa verificar se eles são iguais, se esse não é o comportamento que você deseja.Usar substr :
fonte
Tempo de execução para as 3 respostas:
Remova a primeira letra substituindo o caso
Tempo de execução para 1.000.000 de testes:
0.39602184295654
segRemova a primeira letra com substr ()
Tempo de execução para 1.000.000 de testes:
5.153294801712
segRemova a primeira letra com ltrim ()
Tempo de execução para 1.000.000 de testes:
5.2393000125885
segRemova a primeira letra com preg_replace ()
Tempo de execução para 1.000.000 de testes:
6.8543920516968
segfonte
$str[0] = '';
solução e não funcionou. bem, no entanto, se você planeja usar a variável, por exemplo, para comparar>
ou<
ela não funcionará. Ainda conta `` como + `por exemplo$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
mostrar o tamanho do caractere anterior ... tentei aparar a palavra-chave e funcionou bemvar_dump(trim($keyword))
.. Espero que isso ajude alguém .. :)Aqui está o código
Resultado:
fonte
Para remover o primeiro caractere da string no PHP,
fonte
Veja o exemplo 3 do manual do PHP
Nota:
não funcionará porque você não pode desmarcar parte de uma sequência: -
fonte
Atualizar
Depois de mais testes, não recomendo mais usar isso. Isso causou um problema para mim ao usar a string atualizada em uma consulta MySQL e alterar para
substr
corrigir o problema. Pensei em excluir esta resposta, mas os comentários sugerem que é mais rápido, de alguma forma, para que alguém possa usá-la. Você pode achar que aparar a string atualizada resolve problemas de comprimento da string.Às vezes você não precisa de uma função:
Por exemplo:
Este método modifica a cadeia existente em vez de criar outra.
fonte
A resposta aceita:
funciona, mas removerá vários
:
quando houver mais de um no início.irá remover qualquer caractere desde o início.
Contudo,
funciona perfeitamente.
fonte
você pode usar a função sbstr ()
fonte
Apara as ocorrências de todas as palavras de uma matriz desde o início e o final de uma sequência de caracteres + espaço em branco e, opcionalmente, caracteres únicos extras, conforme o corte normal ()
fonte
O código funciona bem para mim.
Talvez, contribua com respostas também.
fonte
use a função mb_substr
fonte