Eu tenho uma string e gostaria de obter tudo depois de um certo valor. A string sempre começa com um conjunto de números e depois com um sublinhado. Eu gostaria de obter o resto da string após o sublinhado. Por exemplo, se eu tiver as seguintes seqüências de caracteres e o que gostaria de retornar:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
Como posso fazer algo assim?
if (($pos = strpos($data, "_")) !== FALSE) { $whatIWant = substr($data, $pos+1); }
substr($data, (strrpos($data, '_') ?: -1) +1)
.function StrAfterStr($S, $H) { return (($P = strpos($S, $H)) !== false) ? substr($S, $P + 1) : false; }
strtok
é uma função esquecida para esse tipo de coisa. É para ser bastante rápido.Seqüência vazia como essa forçará o restante da seqüência a ser retornada.
NB: se não houvesse nada após o '_', você obteria um
FALSE
valor para$allTheRest
qual, conforme declarado na documentação , deve ser testado com ===, para distinguir de outros valores falsos.fonte
strtok('a_b', '_')
vai voltara
, masstrtok('_b', '_')
vai voltarb
, não uma cadeia vazia como seria de esperarAqui está o método usando
explode
:ou:
Ao especificar
2
olimit
parâmetro inexplode()
, ele retorna uma matriz com 2 elementos no máximo separados pelo delimitador de string. Retornar o 2º elemento ([1]
) dará o restante da string.Aqui está outro one-liner usando
strpos
(como sugerido por @flu ):fonte
se alguém precisar extrair a primeira parte da string, tente,
Inquerir:
Resultado:
This_is_a_string
fonte
Outra maneira simples, usando strchr () ou strstr () :
fonte
Em uma única afirmação seria.
fonte
Eu uso strrchr (). Por exemplo, para encontrar a extensão de um arquivo, eu uso esta função:
fonte