Tengo una cadena que es una combinación de letras y dígitos. Para mi aplicación tengo que separar una cadena con letras y dígitos: ex: Si mi cadena es "12jan" i hav para obtener "12" "jan" separado ..Cómo separar letras y dígitos de una cadena en php
Respuesta
$string = "12312313sdfsdf24234";
preg_match_all('/([0-9]+|[a-zA-Z]+)/',$string,$matches);
print_r($matches);
esto podría funcionar mucho mejor
preg_match_all('/^(\d+)(\w+)$/', $str, $matches);
var_dump($matches);
$day = $matches[1][0];
$month = $matches[2][0];
Por supuesto, esto sólo funciona cuando sus cadenas son exactamente como se describe "abc123" (sin espacios en blanco anexa o antepuesto).
Si desea obtener todos los números y caracteres, puede hacerlo con una expresión regular.
preg_match_all('/(\d)|(\w)/', $str, $matches);
$numbers = implode($matches[1]);
$letters = implode($matches[2]);
var_dump($numbers, $letters);
Esto supone que la cadena no será jan12 o fg1dg34sdf. –
Gracias por redondear mi reputación derrotador anónimo. :) – alex
Mi voto fue antes de que editaras tu respuesta. He deshecho mi voto. :) –
$numbers = preg_replace('/[^0-9]/', '', $str);
$letters = preg_replace('/[^a-zA-Z]/', '', $str);
Parece correcto –
[No necesita invocar el motor regex dos veces] (http://stackoverflow.com/questions/4311156/how-to-separate-letters-and-digits-from-a-string -in-php/4311202 # 4311202). – alex
@alex, si es cuestión de velocidad, lo que publique es más rápido en mi prueba (100000 iteraciones).Yo creo que es más claro también. –
intenta esto:
$string="12jan";
$chars = '';
$nums = '';
for ($index=0;$index<strlen($string);$index++) {
if(isNumber($string[$index]))
$nums .= $string[$index];
else
$chars .= $string[$index];
}
echo "Chars: -$chars-<br>Nums: -$nums-";
function isNumber($c) {
return preg_match('/[0-9]/', $c);
}
en algunas versiones es is_numeric() –
Usted puede hacer uso de preg_split
para dividir la cadena en el punto que está precedida por dígitos, seguido por letras como:
$arr = preg_split('/(?<=[0-9])(?=[a-z]+)/i',$str);
<?php
$str = '12jan';
$arr = preg_split('/(?<=[0-9])(?=[a-z]+)/i',$str);
print_r($arr);
Resultado:
Array
(
[0] => 12
[1] => jan
)
su código no funciona si hay espacio en blanco. '$ str = 12 Ene' al igual que –
Si hay un espacio en blanco, ¿no sería más fácil explotar utilizando el espacio como delimitador? –
@PrashantTapase solo agregue espacio en el juego de caracteres '[a-z]': '[\ sa-z]' – sglessard
Después de haber trabajado más con PHPExcel, tales operaciones son comunes. #Tapase ,. Aquí hay un preg_split que hace que quieras con espacio dentro de la cadena.
<?php
$str = "12 January";
$tempContents = preg_split("/[\s]+/", $str);
foreach($tempContents as $temp){
echo '<br/>'.$temp;
}
?>
Usted puede agregar una coma al lado de la s de coma separados. Espero que ayude a alguien. Anton K.
Esto funciona para mí como por mi requerimiento, se puede editar de acuerdo con la suya
function stringSeperator($string,$type_return){
$numbers =array();
$alpha = array();
$array = str_split($string);
for($x = 0; $x< count($array); $x++){
if(is_numeric($array[$x]))
array_push($numbers,$array[$x]);
else
array_push($alpha,$array[$x]);
}// end for
$alpha = implode($alpha);
$numbers = implode($numbers);
if($type_return == 'number')
return $numbers;
elseif($type_return == 'alpha')
return $alpha;
}// end function
<?php
$data = "#c1";
$fin = ltrim($data,'#c');
echo $fin;
?>
Bienvenido a StackOverflow. Cuando responda una pregunta, explique su código en lugar de solo publicar el código. – yakatz
pensé que era simple y claro, ¡está bien! si usas ltrim() puedes eliminar algunos charcters de la izquierda de tu cadena, por ejemplo, quité #c de toda la cadena, por lo que quedarás fuera con 1 –
si haces que incluso agregues la salida que se te agregará puede incluso ++ $ fin y obtener la respuesta como dos –
- 1. Cómo dividir una cadena entre letras y dígitos (o entre dígitos y letras)?
- 2. ¿Cómo verificar si una cadena de php contiene solo letras y dígitos en inglés?
- 3. Python Separar una cadena en la ventana
- 4. Generar una matriz de todas las letras y dígitos
- 5. Separar números largos por 3 dígitos
- 6. ¿Cómo puedo separar un número y obtener los dos primeros dígitos en PHP?
- 7. Separar una cadena en frases
- 8. PHP - Separar una cadena en pares clave/valor
- 9. cómo probar una cadena de letras solamente
- 10. Separar cadena en una matriz de caracteres en C++
- 11. Separar una cadena por espacios
- 12. Separar una cadena en un número, conservando el número
- 13. Separar una cadena en cadenas de elementos
- 14. actuaciones Separar una cadena Java
- 15. ¿Separar cadena una vez en javascript?
- 16. Separar una cadena con mayúsculas
- 17. forma más simple y más corta de contar letras mayúsculas en una cadena con php?
- 18. Separar una cadena basado en expresiones regulares
- 19. dividir una cadena de letras mayúsculas
- 20. ¿Cómo comprobar si una cadena contiene letras inglesas (A-Z)?
- 21. ¿Cómo contar el número de letras en una cadena aleatoria?
- 22. C - Separar una cadena en una matriz de cadenas
- 23. En Excel, ¿cómo extraigo las últimas cuatro letras de una cadena de diez letras?
- 24. Separar una cadena por el delimitador
- 25. ¿Cómo se puede separar un entero en dígitos separados en una matriz en JavaScript?
- 26. Separar cadena en la matriz
- 27. Cómo separar carácter y número de parte de la cadena
- 28. ¿Cómo incrementar una cadena alfanumérica en PHP?
- 29. PHP Regex validar letras y acento español
- 30. ¿Cómo quitar las letras de la cadena?
givng hacia fuera puesto matriz ( [0] => Array ( ) [1] => array ( ) [2] => array ( ) ) –
cambia mi respuesta correctamente – Breezer