google-fu는 오늘 실패합니다. == : 가능한 사업자는 대부분 표준 PHP는 것들입니다분할 URI 쿼리 문자열은 필터처럼 사용합니까? title = php_filter & size> 2 & author! = smith
array(3) {
["title"]=>
array(2) {
["operator"]=>
string(1) "="
["search"]=>
string(8) "my_title"
}
["size"]=>
array(2) {
["operator"]=>
string(1) ">"
["search"]=>
string(1) "2"
}
["author"]=>
array(2) {
["operator"]=>
string(2) "!="
["search"]=>
string(5) "smith"
}
}
: 나는에 쿼리 문자열을 구문 분석을 찾고 있어요
https://example.com/some/path/here?title=my_title&size>2&author!=smith
: 내가 좋아하는 쿼리 고통을 구문 분석 찾고 있어요 ! =, <>,>, <,> =, < =
이 구문 분석을위한 모든 포인터는 무엇입니까? 감사.
편집 1 : 감사합니다. Armin Sam. 원래 URL에 urldecode가 필요했지만 그렇지 않은 경우 제대로 작동합니다.
function parseURLAsFilters($url) {
$url = urldecode($url);
$result = [];
$queries = explode('&', parse_url($url, PHP_URL_QUERY));
$pattern = '/(==|=|>=|<=|<>|<|>|!=)/';
foreach ($queries as $query) {
$queryArray = preg_split($pattern, $query, -1, PREG_SPLIT_DELIM_CAPTURE);
$result[$queryArray[0]] = [
'operator' => $queryArray[1],
'search' => $queryArray[2]
];
}
return $result;
}
PS : I가 답변을 투표를했지만, 나는이 점을 적용하기에 충분히 높은 순위 아니에요.
PHP 전역 전역 변수 $ _GET, $ _REQUEST를 사용하십시오. 또한 연산자는 url에 전달되지 않고 변수 만 전달하고 논리는 implode하고 PHP는 폭발합니다. –
전체 쿼리 문자열을 가져 오는 데 문제가 없습니다. Im은 그것을 단지 등호가 아니라 ... 가능한 구분 기호의 목록으로 주어진 배열로 파싱합니다. – Mitch
그것이 내가 말한 것입니다. url ($ _GET)에 연산자 (==,! =, <>,>, <, > =, <=)를 전달할 수 없습니다. 귀하의 데이터를 전달하기 위해 다른 수단을 사용하십시오. 직렬화() 데이터를 $ _POST로 전달하는 것은 어떻습니까? –