이 질문에 우연히 만났지 만 eval
을 사용하는 것에 대해 상당히 불안해하며 더 나은 솔루션을 찾기로했습니다.
내가 발견 한 것은 FILTER_VALIDATE_BOOLEAN
플래그 (of which there are many)를 전달할 때 PHP의 filter_var
함수에 대한 또 다른 멋진 사용법입니다.
<?php
/**
* Uses PHP's `filter_var` to validate an object as boolean
* @param string $obj The object to validate
* @return boolean
*/
function parse_boolean($obj) {
return filter_var($obj, FILTER_VALIDATE_BOOLEAN);
}
그리고, 약간의 테스트 :
/**
* Let's do some testing!
*/
$tests = array (
"yes",
"no",
"true",
"false",
"0",
"1"
);
foreach($tests as $test) {
$bool = parse_boolean($test);
echo "TESTED: ";
var_dump($test);
echo "GOT: ";
var_dump($bool);
echo "\n\n";
}
는
이 "한 줄"함수는 부울에 문자열 (또는 다른) 개체를 변환 안전하게에서 잘 할 것 같다 출력 :
/*
TESTED: string(3) "yes"
GOT: bool(true)
TESTED: string(2) "no"
GOT: bool(false)
TESTED: string(4) "true"
GOT: bool(true)
TESTED: string(5) "false"
GOT: bool(false)
TESTED: string(1) "0"
GOT: bool(false)
TESTED: string(1) "1"
GOT: bool(true)
*/
충분히 깊게 보지 못했지만이 솔루션은 eval
라인을 사용하여 어딘가에 의존 할 수 있습니다. 그러나 을 보내고 난 후에도 여전히 입력을 살균 처리 할 것이라고 가정 했으므로 여전히 평이한 것을 사용하는 편이 낫습니다. eval
통해.
당신은 eval ("return". $ mystring)을 시도 했습니까? – Jasper