2012-11-23 3 views
1

다음과 같은 상태 문장을 포함 할 수있는 시스템 메시지 대체 :이 기능은 312 번 실행 된정규식 찾아 상태 문장을

을 가장 많이 처리 Urbanus에에서 사용 : 2012년 6월 16일 (14) : 10.

문장은 항상 한 행에 있습니다.

I을 수행해야합니다. 기호 (포함 공백하지만

  • 문자열은 문자로 구성된 :
    • 정수 1 ~ N (312 여기 :)

      1. 세 개의 굵은 부분을 검색 제외 줄 바꿈) 여기에 숫자 (:. Urbanus에)
      2. 중 "오늘"또는 "어제"또는 여기 DD.MM.YYYY (의 날짜의 날짜 : 24의 HH에 2012년 6월 16일)는
      3. 타임 : mm 형식 (여기에는 14 : 10)
  • 시스템 메시지에서 전체 문장을 제거하십시오.

  • 나는 다음을 시도했지만 제대로 동작하지 않습니다 :

    $matches = preg_replace(
    "/This function was executed ([1-9]|[1-9][0-9]|[1-9][0-9][0-9]) times, most often used by process (.+?): ((Today|Yesterday|[0-9]{2}.[0-9]{2}.[0-9]{4}) ([0-9]{2}:[0-9]{2}))./iU", 
    "", 
    $message); 
    

    답변

    1

    1part :

    에 한번 사용 preg_match_all. 또한 나는 당신의 패턴 공백과 일치하지 않는 승 \

    $message = 'This function was executed 312 times, most often used by process Urbanus: 16.06.2012 14:10.'; 
    
    $matches = array(); 
    if (preg_match_all("/This function was executed ([1-9]|[1-9][0-9]+) times, most often used by process (\w+?): ((Today|Yesterday|[0-9]{2}.[0-9]{2}.[0-9]{4}) ([0-9]{2}:[0-9]{2}))./i", $message, $matches)) { 
        var_dump($matches); 
    } 
    
    +0

    을 개선, [\ 승 \]이어야합니다. '기호'가 무엇을 의미하든 [^ : \ n]과 (과) 같이 가야 할 수도 있습니다. –

    +0

    @ Sergey 감사합니다. 그러나 그것은 나를 위해 맞지 않습니다. 또한 preg_match (_all)을 사용하면 일치하는 문장을 대체하지 않습니다. 그렇습니까? –

    +0

    @Lucas Hoepner "기호"란 콜론, 쉼표, 세미콜론, 느낌표 등을 의미합니다. –