2010-11-23 5 views
2

iPhone에서 Ruby on Rails 응용 프로그램을 볼 때보기를 분리하는 온라인 메소드를 발견했으며이를 감지하기 위해 사용자 에이전트를 구문 분석합니다. 이전 버전이 내 응용 프로그램에 필요한 HTML5 웹 소켓을 지원하지 않았기 때문에 iOS 4.2 이상을 대상으로합니다.사용자 에이전트가 Regex로 구문 분석

지금까지 내가 구문 분석 오전 12시 37 분의하지만 치료가 작동하는 것 같습니다 문제는 내가 베타 또는 운영 체제의 베타 버전을 사용하는 경우 사용자 에이전트 4_2 포함되지 않을 수 있습니다 있지만 웹 소켓. 4 또는 더 큰

  • (? 선택 사항) 아무것도 얹는는
  • 있는 경우

    • :

      내 질문에 나는 다음과 같은 결과를 가지고있는 문자열을 구문 분석 수있는 방법 ..입니다 내 정규식은 끔찍한 질문이므로 변칙적 인 질문을 던지십시오.

      고맙습니다. Tom.

    답변

    0

    그것은 "신뢰성"사용자 에이전트 문자열을 구문 분석 실제로 불가능; 몇 가지 일반적인 User-Agent 문자열은 HTTP 1.1 (RFC 번호는 잊어 버렸습니다) WRT를 괄호 (. 사용자 에이전트 스니핑은 특정 기능을 "허용"하고 다른 사람 (특히 Microsoft가 할 때)에 대한 일부 브라우저의 우대 조치에 대한 불만을 제기하고 누군가가 거대한 정규 표현식을 업데이트해야한다는 것을 의미 할 때 매우 취약합니다.

    브라우저가 지원하는 기능을 감지하는 데 더 좋은 방법이 있습니까 (예 : JavaScript 사용)?

    그럼에도 불구하고 ; *CPU +iPhone +OS +(4_(2|[3-9]|\d\d)|[5-9]|\d\d)\[0-9a-zA-Z_]* +like +Mac +OS +X *;과 같은 작업을 수행 할 수 있습니다.

    0

    기술적으로는 가능하지만 미래의 모든 가능한 버전 번호를 명시 적으로 나열해야합니다. regex는 텍스트 매칭 도구입니다. "숫자가 이보다 큰 경우 true를, 작은 경우 false"와 같은 논리를 포함하는 쉬운 방법은 없습니다. 아마 숫자 문자열 ([0-9]+_[0-9]+ 또는 뭔가)을 추출한 다음 그 결과에 대한 논리를 작성하기를 원할 것입니다.

    0

    ([5-9]|\d\d)[^+]*

    관련 문제