web-dev-qa-db-fra.com

PHP: diviser une chaîne en un tableau pour chaque caractère

Je fais une méthode pour que votre mot de passe ait besoin d'au moins une légende et un symbole ou un chiffre. Je pensais à diviser la chaîne pour perdre des caractères, puis utiliser preggmatch pour compter si elle contient un capital et un symbole/numéro.

cependant j'ai fait quelque chose comme ça dans le script d'action mais je ne peux pas comprendre comment cela s'appelle en php. je ne peux pas trouver un moyen de mettre chaque caractère d'un mot dans un tableau.

Exemple AS3

    for(var i:uint = 0; i < thisWordCode.length -1 ; i++)
{
    thisWordCodeVerdeeld[i] = thisWordCode.charAt(i);
    //trace (thisWordCodeVerdeeld[i]);
}

Merci, Matthy

46
matthy

Vous pouvez accéder aux caractères des chaînes de la même manière que vous accéderiez à un index de tableau, par ex.

$length = strlen($string);
$thisWordCodeVerdeeld = array();
for ($i=0; $i<$length; $i++) {
    $thisWordCodeVerdeeld[$i] = $string[$i];
}

Vous pourriez également faire:

$thisWordCodeVerdeeld = str_split($string);

Cependant, vous pourriez trouver qu'il est plus facile de valider la chaîne en tant que chaîne entière, par exemple en utilisant des expressions régulières.

67
Tom Haigh

vous pouvez convertir une chaîne en tableau avec str_split et utiliser foreach

$chars = str_split($str);
foreach($chars as $char){
    // your code
}
57
Kiyan

Vous pouvez accéder à une chaîne à l'aide de [], comme pour les tableaux:

$stringLength = strlen($str);
for ($i = 0; $i < $stringLength; $i++)
    $char = $str[$i];
15
Greg

Étant donné que la fonction str_split() n'est pas sécurisée sur plusieurs octets, une solution simple pour diviser la chaîne codée UTF-8 consiste à utiliser preg_split() avec u (PCRE_UTF8) modificateur.

preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )
8
Danijel

Une solution moins lisible, mais plus performante, lors de l'itération sur plusieurs chaînes, pourrait utiliser isset pour vérifier la fin de la chaîne. Cela pourrait être plus performant car isset est une construction de langage et strlen est une fonction:

for ($i = 0; isset($value[$i]); $i++) {
    "do something here"
}

Cette question devrait fournir plus d'informations.

2
Technomad