Tengo una cadena y me gustaría obtener todo después de un cierto valor. La cadena siempre comienza con un conjunto de números y luego un guión bajo. Me gustaría obtener el resto de la cadena después del guión bajo. Entonces, por ejemplo, si tengo las siguientes cadenas y lo que me gustaría devolver:
"123_String" -> "String"
"233718_This_is_a_string" -> "This_is_a_string"
"83_Another Example" -> "Another Example"
¿Cómo puedo hacer algo como esto?
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
es una función pasada por alto para este tipo de cosas. Está destinado a ser bastante rápido.Una cadena vacía como esta obligará a devolver el resto de la cadena.
Nota: si no hubiera nada después del '_', obtendría un
FALSE
valor para el$allTheRest
cual, como se indica en la documentación , debe probarse con ===, para distinguirlo de otros valores falsos.fuente
strtok('a_b', '_')
regresaráa
perostrtok('_b', '_')
no regresaráb
, no una cadena vacía como era de esperarAquí está el método usando
explode
:o:
Al especificar
2
ellimit
parámetro enexplode()
, devuelve una matriz con 2 elementos máximos separados por el delimitador de cadena. Volviendo el segundo elemento ([1]
), dará el resto de la cadena.Aquí hay otro one-liner usando
strpos
(como lo sugiere @flu ):fuente
si alguien necesita extraer la primera parte de la cadena, puede intentarlo,
Consulta:
Salida:
This_is_a_string
fuente
Otra forma simple, usando strchr () o strstr () :
fuente
En una sola declaración sería.
fuente
Yo uso strrchr (). Por ejemplo, para encontrar la extensión de un archivo, uso esta función:
fuente