Tenga en cuenta que lrtim eliminará todo :::::. A veces este no es el comportamiento deseado.
CDR
55
tenga en cuenta que esto solo está destinado a caracteres individuales. ltrim recortará todos los caracteres en la cadena proporcionada: ltrim('prefixprefix_postfix', 'prefix')resultados en'_postfix';
Las cadenas se indexan a partir de 0, y este segundo parámetro de funciones toma el corte inicial. Así que haz ese 1, y el primer personaje desaparecerá.
Tenga cuidado con unicode. Si se trata de una cadena arbitraria (por ejemplo, "Ål <- danés para anguila"), debe usar mb_substr y especificar la codificación.
Thomas Jensen
esta no es una implementación correcta, no funciona con la cadena de caracteres "a". si intenta una cadena de un solo carácter, substr devuelve un valor booleano
anru
2
@anru El manual indica que si la longitud de la cadena es igual al parámetro de inicio, se devolverá una cadena vacía. Antes de la versión 7, falsefue devuelto. Por lo tanto, deberá verificar si son iguales si ese no es el comportamiento que desea.
Gracias. Ver mi actualización, sin embargo. Me causó un problema al usar la cadena actualizada en una consulta SQL.
rybo111
66
Acabo de probar la $str[0] = '';solución y no funcionó. bien, sin embargo, si planea usar la variable, por ejemplo, para comparar >o <no funcionará. Todavía cuenta `` como + 'por ejemplo $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
Ian
@ Ian: Me encontré con el mismo problema al buscar registros de una API usando una palabra clave, probé var_dump($keyword)que mostraba la longitud del carácter anterior ... luego intenté recortar la palabra clave y luego funcionó bien var_dump(trim($keyword))... Espero que esto ayude a alguien ... :)
Syed Qarib
3
Esto no funciona. La posición "eliminada" se reemplaza con un byte nulo, por lo que obtiene "\ 0hello" en lugar de "hola".
Josef Kufner
1
Me aparece "Advertencia: no se puede asignar una cadena vacía a un desplazamiento de cadena" para $ str [0] = "";
Después de más pruebas, ya no recomiendo usar esto. Me causó un problema al usar la cadena actualizada en una consulta MySQL y al cambiar para substrsolucionar el problema. Pensé en eliminar esta respuesta, pero los comentarios sugieren que es más rápido de alguna manera para que alguien pueda usarla. Puede encontrar que recortar la cadena actualizada resuelve problemas de longitud de cadena.
A veces no necesitas una función:
$str[0]='';
Por ejemplo:
$str ='AHello';
$str[0]='';
echo $str;// 'Hello'
Este método modifica la cadena existente en lugar de crear otra.
@EmanuilRusev ¿cómo es eso? Es curioso si quieres decir que es más rápido escribir o se ejecuta más rápido.
rybo111
Quiero decir que corre más rápido.
Emanuil Rusev
@EmanuilRusev Me interesaría si pudiera proporcionar algunas estadísticas, ya que agregaré a la respuesta.
rybo111
1
Tengo que tener cuidado con esto. El siguiente código genera bool (falso). $ foo = 'libro'; $ bar = 'libro'; $ bar = substr ($ bar, 1); $ foo [0] = ''; var_dump ($ foo === $ bar);
aunquetretrepo
8
La respuesta aceptada:
$str = ltrim($str,':');
funciona, pero eliminará múltiples :cuando haya más de uno al inicio.
Recorta las apariciones de cada palabra en una matriz desde el principio y el final de una cadena + espacio en blanco y, opcionalmente, caracteres individuales adicionales según el recorte 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 no funciona con una cadena de un solo carácter: como "a"
anru
Tienes razón =) Entonces, cree que una posible solución sería probar antes de que solo contenga un personaje. Por ejemplo: $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): $ str; O $ str = strlen ($ str)> 1? substr ($ str, - (strlen ($ str) -1)): ''; porque la idea es eliminar el último personaje, si solo tienes uno ...: P
Respuestas:
Para eliminar cada
:
desde el comienzo de una cadena, puede usar ltrim :fuente
:::::
. A veces este no es el comportamiento deseado.ltrim('prefixprefix_postfix', 'prefix')
resultados en'_postfix';
La
substr()
función probablemente te ayudará aquí:Las cadenas se indexan a partir de 0, y este segundo parámetro de funciones toma el corte inicial. Así que haz ese 1, y el primer personaje desaparecerá.
fuente
false
fue devuelto. Por lo tanto, deberá verificar si son iguales si ese no es el comportamiento que desea.Utilice substr :
fuente
Tiempo de ejecución para las 3 respuestas:
Quite la primera letra reemplazando el caso
Tiempo de ejecución para 1.000.000 de pruebas:
0.39602184295654
seg.Eliminar la primera letra con substr ()
Tiempo de ejecución para 1.000.000 de pruebas:
5.153294801712
seg.Elimina la primera letra con ltrim ()
Tiempo de ejecución para 1.000.000 de pruebas:
5.2393000125885
seg.Elimine la primera letra con preg_replace ()
Tiempo de ejecución para 1.000.000 de pruebas:
6.8543920516968
seg.fuente
$str[0] = '';
solución y no funcionó. bien, sin embargo, si planea usar la variable, por ejemplo, para comparar>
o<
no funcionará. Todavía cuenta `` como + 'por ejemplo$str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
var_dump($keyword)
que mostraba la longitud del carácter anterior ... luego intenté recortar la palabra clave y luego funcionó bienvar_dump(trim($keyword))
... Espero que esto ayude a alguien ... :)Aqui esta el codigo
Salida:
fuente
Para eliminar el primer carácter de la cadena en PHP,
fuente
Vea el ejemplo 3 del manual de PHP
Nota:
no funcionará ya que no puede desarmar parte de una cadena: -
fuente
Actualizar
Después de más pruebas, ya no recomiendo usar esto. Me causó un problema al usar la cadena actualizada en una consulta MySQL y al cambiar para
substr
solucionar el problema. Pensé en eliminar esta respuesta, pero los comentarios sugieren que es más rápido de alguna manera para que alguien pueda usarla. Puede encontrar que recortar la cadena actualizada resuelve problemas de longitud de cadena.A veces no necesitas una función:
Por ejemplo:
Este método modifica la cadena existente en lugar de crear otra.
fuente
La respuesta aceptada:
funciona, pero eliminará múltiples
:
cuando haya más de uno al inicio.eliminará cualquier personaje desde el principio.
Sin embargo,
funciona perfectamente.
fuente
puedes usar la función sbstr ()
fuente
Recorta las apariciones de cada palabra en una matriz desde el principio y el final de una cadena + espacio en blanco y, opcionalmente, caracteres individuales adicionales según el recorte normal ()
fuente
El código me funciona bien.
Quizás, contribuya con respuestas también.
fuente
utilizar la función mb_substr
fuente