2012-06-19 2 views
1

사용자 작업 요청을 읽고 해당 구성 요소로 파싱하는 PHP 스크립트입니다. 예, 사용자 유형은 SET Colour = Blue 또는 describe Chocolate Cake = The best cake ever!에서 I는 다음과 같이 사용하고 있습니다 : 나는 문자열의 나머지 부분을 얻기에 아무것도 찾을 수 없습니다strtok (null)로 인해 버그가 발생합니까?

$actionKeyword = strtok($actionRequest, " "); // keyword followed by space 
$name = strtok("="); // Then name followed by equals 
$description = strtok(null); // get the rest of the string 

. PHP.net의 예는 공백을 사용하여 각 단어를 토큰 화했지만 설명의 일부가 아닐 수도있는 문자는 없습니다. 이 솔루션은 내 테스트에서 작동합니다.

부작용이 있거나 실패 할 특별한 경우가 있습니까? 아니면 나머지 라인을 얻는 데 완벽하고 안전하며 수용 가능한 방법입니까?

+0

불쾌한 부작용이 없어야합니다. ;) –

답변

1

strtok이 매개 변수를 구문 분석 할 때 null이 빈 문자열로 변환되므로 현재 버그가 발생하지 않아야합니다.

strtok('') 형식을 명시 적으로 사용하면 더 안전 할 것입니다. 그것이 작동하는 이유는 strtok이 토큰 화 된 구분 기호 문자 목록을 토큰 매개 변수로 기대하기 때문입니다. 빈 문자열은 기본적으로 구분 기호의 빈 목록입니다. 그리고 찾을 구분 기호는 나머지 문자열이 모두 반환된다는 것을 의미하지 않습니다.)

그런데이 설명서는 in comments 매뉴얼 페이지에 있습니다.)

+0

Arg, 바닥에 보이지 않았다. 감사. – ShawnPConroy

1

예 당신은 할 수 있습니다 -

$actionKeyword = strtok("describe Chocolate Cake = The best cake ever!", " "); // keyword followed by space 
$name = strtok("="); // Then name followed by equals 
$description = strtok(""); // get the rest of the string 
...

Working example here

참고하거나 어떤 토큰없이 strtok("") 전화 : 당신이 최고의 공간을 포함로 잘라해야합니다

관련 문제