J'ai une chaîne qui est une combinaison de lettres et de chiffres. Pour ma demande, je dois séparer une chaîne de lettres et de chiffres: ex: Si ma chaîne est « 12jan » i VHA pour obtenir « 12 » « jan » séparément ..Comment séparer les lettres et les chiffres d'une chaîne en php
Répondre
$string = "12312313sdfsdf24234";
preg_match_all('/([0-9]+|[a-zA-Z]+)/',$string,$matches);
print_r($matches);
cela pourrait fonctionner beaucoup mieux
preg_match_all('/^(\d+)(\w+)$/', $str, $matches);
var_dump($matches);
$day = $matches[1][0];
$month = $matches[2][0];
Bien sûr, cela ne fonctionne que lorsque vos chaînes sont exactement comme décrit "abc123" (sans espace ajouté ou préfixé).
Si vous voulez obtenir tous les nombres et caractères, vous pouvez le faire avec une regex.
preg_match_all('/(\d)|(\w)/', $str, $matches);
$numbers = implode($matches[1]);
$letters = implode($matches[2]);
var_dump($numbers, $letters);
Cela présume que la chaîne ne sera pas jan12 ou fg1dg34sdf. –
Merci d'avoir arrondi ma réputation de downvoter anonyme. :) – alex
Mon downvote était avant que vous avez édité votre réponse. J'ai défait mon vote. :) –
$numbers = preg_replace('/[^0-9]/', '', $str);
$letters = preg_replace('/[^a-zA-Z]/', '', $str);
Il semble correct –
[Vous n'avez pas besoin d'invoquer deux fois le moteur regex] (http://stackoverflow.com/questions/4311156/how-to-separate-letters-and-digits-from-a-string -in-php/4311202 # 4311202). – alex
@alex, si c'est une question de vitesse, ce que j'ai posté est plus rapide dans mon test (100000 itérations).Je crois que c'est plus clair aussi. –
Essayez ceci:
$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);
}
dans certaines versions c'est is_numeric() –
Vous pouvez utiliser preg_split
pour diviser votre chaîne au point qui est précédé par chiffre et est suivi par des lettres comme:
$arr = preg_split('/(?<=[0-9])(?=[a-z]+)/i',$str);
<?php
$str = '12jan';
$arr = preg_split('/(?<=[0-9])(?=[a-z]+)/i',$str);
print_r($arr);
Résultat:
Array
(
[0] => 12
[1] => jan
)
votre code ne fonctionne pas s'il y a des espaces. '$ str = 12 Jan' comme ça –
S'il y a un espace, ne serait-il pas plus facile d'utiliser exploser en utilisant l'espace lui-même comme un délimiteur? –
@PrashantTapase ajoute simplement de l'espace dans le jeu de caractères '[a-z]': '[\ sa-z]' – sglessard
Après avoir travaillé plus avec PHPExcel, de telles opérations sont communes. #Tapase ,. Voici un preg_split qui vous donne ce que vous voulez avec de l'espace dans la chaîne.
<?php
$str = "12 January";
$tempContents = preg_split("/[\s]+/", $str);
foreach($tempContents as $temp){
echo '<br/>'.$temp;
}
?>
Vous pouvez ajouter une virgule à côté du s pour séparées par des virgules. J'espère que cela aidera quelqu'un. Anton K.
Cela fonctionne pour moi selon mes besoins, vous pouvez modifier selon vôtre
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;
?>
Bienvenue dans StackOverflow. Lorsque vous répondez à une question, veuillez expliquer votre code plutôt que d'afficher du code. – yakatz
J'ai trouvé que c'était simple et clair, d'accord! si vous utilisez ltrim() vous pouvez supprimer des caractères de la gauche de votre chaîne par exemple je supprimais #c de la chaîne entière de sorte que vous seriez exclu avec 1 –
si vous vous faites même ajouter la sortie il vous sera ajouté peut même ++ $ fin et obtenir la réponse en deux –
- 1. Séparer les chiffres longs par 3 chiffres
- 2. Comment séparer des lettres et des chiffres d'une chaîne en JavaScript
- 3. Incrémentation automatique avec une chaîne de chiffres et de lettres
- 4. En Python, comment séparer une chaîne et conserver les séparateurs?
- 5. Comment séparer une chaîne en Java et conserver les délimiteurs?
- 6. Comment séparer les valeurs retournées en PHP?
- 7. comment séparer une chaîne en php
- 8. Comment puis-je analyser une chaîne en lettres, chiffres, etc. dans MATLAB?
- 9. Bibliothèque ou code pour convertir les chiffres en lettres
- 10. Comment séparer des chaînes en différents types (int pour les valeurs numériques et char pour les lettres)?
- 11. Django RegexField Lettres et chiffres seulement
- 12. C# Expression régulière pour faire correspondre les lettres, les chiffres et les traits de soulignement
- 13. Comment diviser une chaîne en C# sur la base de lettres et de chiffres
- 14. Comment supprimer tous les caractères sauf les chiffres, les lettres, les guillemets et les deux-points/points-virgules?
- 15. Validation de l'entrée - Chiffres et lettres
- 16. php quelques chiffres de chaîne
- 17. Jquery Tablesorter: trier les chiffres au-dessus des lettres
- 18. Autoriser uniquement les lettres; pas de ponctuation pas de chiffres
- 19. PHP problème d'expression PCRE - obtenir les chiffres d'une chaîne
- 20. jquery/JS autorise uniquement les chiffres et les lettres dans un champ de texte
- 21. Comment spécifier les chiffres et les décimales avec NumberFormatInfo
- 22. simple pour les lettres Regex majuscules et minuscules, des chiffres et quelques symboles
- 23. découper une chaîne basée sur le modèle en java - lettres majuscules et chiffres
- 24. PHP et lettres russes
- 25. Comment séparer une chaîne en Python?
- 26. PHP Expression régulière pour supprimer tous les caractères autres que les chiffres et les périodes
- 27. Séparer les chaînes CSV
- 28. SML et les chiffres église
- 29. Comment puis-je séparer les en-têtes, les classes et les fonctions principales en C++?
- 30. Pourquoi les nombres et les lettres gênants dans ma chaîne de requête?
givng eteint Tableau ( [0] => array ( ) [1] => tableau ( ) [2] => tableau ( ) ) –
modifie ma réponse correctement – Breezer