2013-06-10 3 views
0

을 사용하고 내 문자열을 인식하지 않는 것 나는 다음과 같은 문자열이 : 코드에서 아래 $track_matches[0][0]에 해당strpos()는 내가

CAE33D8E804334D5B490EA273F36830A9849ACDF|xx|yy|46|13896|9550 

합니다.

유일한 고정 길이 필드는 첫 번째 문자 (CAE33D8E804334D5B490EA273F36830A9849ACDF)이며 길이는 40 자입니다. 값이 xxyy 알 수없는 길이 및 값을 나머지 열에 가져 오려고합니다. 이 같은

그래서 노력하고 뭔가 :

$seperator= '|'; 
$end_seed= strpos($track_matches[0][0], $seperator, 41); 
$seeders[$i] = substr($track_matches[0][0], 41, $end_seed - 41); 
$end_leech= strpos($track_matches[0][0], $seperator, $end_seed +1); 
echo "end_seed" . $end_seed . " end_leach: " . $end_leech; 
$leechers[$i] = substr($track_matches[0][0], $end_seed +1, $end_leech - $end_seed - 1); 

내가 무엇입니까 문제는 라인 $end_leech=이 제대로 작동하지 않는 것입니다 (그리고 $seperator를 인식하지 못합니다) 및 (전체 라인을 retuns $track_matches[0][0]) echo 'd $ end_seed 동안 올바른 값을 반환하면 값으로. ... 무슨 일이 벌어지고있는 거지? 어떻게 고칠 수 있니?

+1

으로 참조하십시오. 왜 [explode] (http://php.net/manual/en/function.explode.php)? –

+1

'explode()'를 사용하지 않는 것이 어떨까요? –

+0

왜냐하면,이 함수가 PHP (여전히 배우는) 사본에 존재하고 깜빡했기 때문에 ... 나는 실망 스럽습니다. – brendosthoughts

답변

0

시도 : 물론

$myString="CAE33D8E804334D5B490EA273F36830A9849ACDF|xx|yy|46|13896|9550"; 
$splitString=explode('|',$myString); 
$xx=$splitString[1]; 
$yy=$splitString[2]; 

당신은 SUBSTR 등 strpos, 수동으로 복제 할 수 있지만 더 많은 노력을 취할 것입니다

1

시도 :

$temp = explode("|", $track_matches[0][0]); 

배열을 반환하고 당신이 할 수있는 것 그런 다음 바를 $temp[1] (xx) 및 $temp[2] (yy)