2012-07-12 6 views
0

숫자 데이터에 점 (예 : $x = "OP/1.1.2/DIR";)이 포함 된 문자열 변수가 있습니다. 숫자 데이터의 위치는 응용 프로그램 내에서 수정하여 사용자 환경에 따라 바뀔 수 있으며 슬래시 바는 다른 문자로 변경 될 수 있습니다. 점으로 구분 된 숫자 데이터는 필수 항목입니다. 그럼 점으로 찍은 숫자 데이터를 추출하는 방법은 여기 1.1.2 문자열에서?문자열 내에서 점으로 숫자 데이터를 가져 오는 방법은 무엇입니까?

답변

4

사용하십시오 regular expression :

(\d+(?:\.\d+)*) 

내역 :

  • \d+ 다시 하나 이상의 숫자 뒤에 하나 개 이상의 숫자
  • \. 리터럴 진수 . 문자
  • \d+에 대한보기
  • (...)*이 경기를 0 또는이 패턴이이 그룹에 대한 역 참조 생성하지 않는 엔진을 알려줍니다
  • (?:...)의 이상 발생을 의미합니다 (기본적으로, 우리는 참조를 사용하지 않는를, 그래서 가지고 무의미 하나)

당신은 데이터에 대한 많은 정보를 제공하지 않은, 그래서 나는 다음과 같은 가정했습니다 :

  • 데이터는 항상 최소한 하나의 숫자
  • 이 데이터는 점없이 단지 수를 포함 할 수 있습니다 포함됩니다
  • 데이터는 이러한 가정 중 하나가 잘못된 경우, 당신은 정규 표현식을 수정해야합니다 자체가

점/숫자 쌍의 수를 포함 할 수 있습니다 멀티 자리 숫자를

  • 숫자를 포함 할 수 있습니다.

    사용 예 :

    $x = "OP/1.1.2/DIR"; 
    
    if (!preg_match('/(\d+(\.\d+)*)/', $x, $matches)) { 
        // Could not find a matching number in the data - handle this appropriately 
    } else { 
        var_dump($matches[1]); // string(5) "1.1.2" 
    } 
    
  • +1

    '/은 (\ D + (?. \ \ D +) *) /'메모리를 적게 소모한다. – Florent

    +0

    @Florent : 그것을 찾아 주셔서 감사합니다. 고장에 대해 좀 더 설명해 드리겠습니다. – FtDRbwLXw6

    +0

    데이터를 얻으려면 항상 $ matches [1]입니까? 또는 $ matches [0]에서 얻을 수 있습니까? – pheromix

    관련 문제