2009-08-18 2 views
37

암호에 적어도 하나의 captial과 하나의 기호 또는 번호가 필요하도록 메소드를 만들고 있습니다. 문자열을 쪼개서 숯을 잃어 버렸다고 생각했는데 그 다음에 대문자와 기호/숫자가 하나라도 포함되어 있으면 계산에 preggmatch를 사용합니다.PHP : 문자열을 배열로 분할 foreach char

그러나 나는이 작업 스크립트에서 뭔가를했지만 PHP에서 어떻게 호출되는지 알아낼 수 없습니다. 나는 단어의 모든 문자를 배열에 넣는 방법을 찾지 못한다.

AS3 예

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

감사합니다, Matthy

당신이 배열을 위해 할과 같이, []을 사용하여 문자열에 액세스 할 수 있습니다
+2

정규식을 사용하지 않는 이유는 무엇입니까 –

+0

http://php.net/manual/en/function.str-split.php – hakre

답변

55

사용자가 액세스 할 수있는 문자를 문자열에서 배열 인덱스에 액세스하는 것과 같은 방법으로

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

당신은 또한 할 수있는 : 당신이 예를 들어, 전체 문자열로 문자열을 검증하기 위해 쉽게 찾을 수 있습니다 그러나

$thisWordCodeVerdeeld = str_split($string); 

정규식을 사용하여.

+0

마지막 awnser 수정 해 주셔서 감사합니다 :) – matthy

+0

대괄호 표기법에 대한 문서 : http://php.net /manual/en/language.types.string.php#language.types.string.substr – Pang

+0

strlen 대신에 isset을 사용하십시오 : for ($ i = 0; isset ($ string [$ i]); $ i ++) {' –

15

:

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

'éléphant'와 같은 멀티 바이트 문자열의 경우 올바르게 작동하지 않습니다. http://stackoverflow.com/questions/3666306/how-to-iterate-utf-8-string-in-php –

40

당신이 str_split() 기능은 안전한 다중 바이트되지

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

IMHO 가장 좋은 방법입니다. 가장 빠를 수는 없지만 대부분의 응용 프로그램에서는 전혀 문제가되지 않습니다. 우리 앱에서는 속도 차이를 측정 할 수도 없었습니다. (Vs for-loop.) –

+1

가장 깨끗한 해결책, thanks – Daniel

+1

질문에 더 직접적으로 대답하기 때문에 이것이 더 좋은 대답이라는 데 동의합니다 –

5

때문에 foreach는 str_split로 문자열을 배열로 변환하여 사용할 수 있습니다, 쉬운 솔루션은 UTF-8 인코딩 된 문자열이 u (PCRE_UTF8) 수정과 preg_split()을 사용하는 것입니다 분할합니다. 많은 문자열을 반복 할 때

preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY) 
1

덜 읽을 수 있지만, 더 나은 성능의 솔루션, 문자열의 끝을 확인하기 위해 isset을 사용하고있을 수 있습니다.

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

This question 더 배경을 제공해야 isset 언어 구조이며 strlen 함수이기 때문 실적이 좋은 수 있습니다.