최종 목표는 oData $ 필터 문자열을 추출하고 PHP에서 mySQL 문자열을 생성하는 것입니다. 예를 들어 :문자열에서 그룹 추출하기
(Field1 eq '(test)' or Field2 lt 20) and (beginsWith('test',Field3) or Field4 eq 3)
그것은 단지가 고유 키워드를 대체하고의 문제가 아니다
(Field1 = '(test)' OR Field2 < 20) AND (Field3 LIKE 'test%' OR Field4 = 3)
될 것입니다. 피할 수없는 것 나는 startsWith ('test', Field3)가 필드이고 그 부분을 mySQL 문으로 변환 할 수 있다는 것을 알 수 있기를 원합니다. 내가 지금까지 시도한 것은 어디 클래스를 저장하는 WhereGroup 클래스를 생성하므로 괄호 안에있는 각 그룹에 인스턴스가 있고 각 명령문은 Where 인스턴스에있게됩니다. 그런 다음 재귀 적으로 where 문을 생성합니다. 하지만 지금은 문자열을 지능적으로 파싱하려고 시도하고 있습니다.
질문 거기에 이미 뭔가 비슷한 일을 할 수있는 뭔가가 있습니까? 아니면 처음부터 무언가를 만드는 길에 있습니까?
정규식? –
당신은 나에게 문자열 테스트와 '테스트', Field3을 WhereGroup으로 포함하지 않는 곳에 생성 된 하나의 예제를 보여줄 수 있습니까? –
'(\ (('test', Field3) \))'일치하는 정규 표현식은'('test', Field3)'입니다. 그게 당신이 찾고있는거야? –