PHP: разделить строку на массив foreach char

Я делаю метод, чтобы ваш пароль нуждался как минимум в одной заглавной и одном символе или цифре. Я думал о том, чтобы разбить строку, чтобы потерять символы, а затем использовать preggmatch для подсчета, если она содержит одну заглавную и символ/число.

однако я сделал что-то подобное в сценарии действия, но не могу понять, как это называется в php. я не могу найти способ поместить каждый символ слова в массив.

Пример AS3

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

Спасибо, Мэтти


person matthy    schedule 18.08.2009    source источник
comment
Почему бы не использовать регулярное выражение сразу   -  person    schedule 18.08.2009
comment
php.net/manual/en/function.str-split.php   -  person hakre    schedule 26.09.2012


Ответы (4)


Вы можете получить доступ к символам в строках так же, как и к индексу массива, например.

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

Вы также можете сделать:

$thisWordCodeVerdeeld = str_split($string);

Однако вы можете обнаружить, что проще проверить строку как целую строку, например. с помощью регулярных выражений.

person Tom Haigh    schedule 18.08.2009
comment
Документация по записи в квадратных скобках: php.net/ руководство/ru/ - person Pang; 23.10.2015
comment
используйте isset вместо strlen: for ($i=0; isset($string[$i]); $i++) { - person Melo Waste; 05.06.2017
comment
$thisWordCodeVerdeeld = str_split($string); Это идеальный ответ для разделения строковых символов и получения каждого из них в массиве. - person Umar Niazi; 16.05.2019

вы можете преобразовать строку в массив с помощью str_split и использовать foreach

$chars = str_split($str);
foreach($chars as $char){
    // your code
}
person Kiyan    schedule 14.02.2013
comment
ИМХО это самый лучший способ. Возможно, он не самый быстрый, но для большинства приложений это вообще не имеет значения. В нашем приложении разницу в скорости даже измерить не удалось. (Против цикла for.) - person Prof. Falken; 14.03.2013
comment
Также согласитесь, что это лучший ответ, поскольку он более прямо отвечает на вопрос. - person Brian Leishman; 25.03.2015
comment
Обратите внимание, что если $str является пустой строкой, str_split вернет [""] - person Josh Johnson; 13.08.2017
comment
Это все еще лучший ответ. Только то, что теперь лучше всего использовать mb_str_split для правильной обработки многобайтовых строк. - person SeparateReality; 11.09.2020

Вы можете получить доступ к строке, используя [], как и для массивов:

$stringLength = strlen($str);
for ($i = 0; $i < $stringLength; $i++)
    $char = $str[$i];
person Greg    schedule 18.08.2009
comment
это не работает правильно для многобайтовой строки, такой как: 'éléphant'. stackoverflow.com/ вопросы/3666306/ - person David Silva Smith; 08.01.2017

Поскольку функция str_split() не является многобайтовой, простым решением для разделения строки в кодировке UTF-8 является использование preg_split() с модификатором u (PCRE_UTF8).

preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )
person Danijel    schedule 27.05.2015
comment
Это важный нюанс - я рад, что прокрутил вниз, чтобы прочитать этот ответ - person Blake Frederick; 24.07.2019