2012-11-28 2 views
1

다음 문자열이 피드에 있습니다. 다시 오후 12시 반 오후 1시 반 12 시간 문자열 일치 방법

  • Ramdom 이벤트 이름에 오후 2시 반
  • 을 이름을

    1. Ramdom 이벤트 : 나는 굵은 부분과 일치하고 변수에 저장해야 업데이트 :

      @cryptic에서 제공하는 솔루션을 사용했습니다.

      $titles = array( 
             "*~Svet~* 12:30PM to 1:30PM", 
             "Basketball (M and W) vs Cleveland State 6:00PM", 
             "Christmas for the Kids Celebration! 2:00PM to 4:00PM" 
            ); 
      
      foreach ($titles as $title) { 
          //get date 
          preg_match('/(\d{1,2}:\d{2}[ap]m)(to \d{1,2}:\d{2}[ap]m)?/i', $title, $match); 
          //get title 
          $cleanTitle = preg_split('/([0-1][0-9]|[0-9]):?([0-5][0-9])/', $title); 
      
      echo "<p>Title: ".$cleanTitle[0]."<br />Time: ".$match[0]."</p>"; 
      
      } 
      

      // 출력

      제목 : ~ 스벳 ~
      시간 12:30 PM 제목 오후

      1:30 : 여기

      는 결과이다 농구 (M 및 W) 대 클리브랜드 주
      시간 : 오후 6시

      제목 : 어린이 축하 크리스마스!
      시간 : 2:00 PM 4:00 PM

    +0

    나는 preg_split을 사용해 보았지만 필요한 결과를 얻지 못했습니다. $ cleanTitle = preg_split ('/ ([0-1] [0-9] | [0-9]) :? ([0-5] [0-9]) /', $ title); – jfurtado

    +0

    더욱 구체적으로 시도해보십시오. 1. "to"도 일치해야합니까? 2. 이름과의 관계가 중요합니까? 3. 당신이 저장해야 할 부분입니까, 아니면 시간 범위와 타임 스탬프와 같은 더 많은 정보가 필요합니까? –

    +0

    1 - "to"도 일치해야 함 2 - 이름과의 관계가 중요하지 않음 3 - 문자열의 강조 표시된 부분이 필요합니다. – jfurtado

    답변

    2
    // String example 1 
    $string = 'Ramdom Event Name 12:30PM to 1:30PM'; 
    preg_match('/(\d{1,2}:\d{2}[ap]m)(to \d{1,2}:\d{2}[ap]m)?/i', $string, $match); 
    echo $match[0]; // outputs 12:30PM to 1:30PM 
    
    // String example 2 
    $string = 'Ramdom Event Name again 2:30PM'; 
    preg_match('/(\d{1,2}:\d{2}[ap]m)(to \d{1,2}:\d{2}[ap]m)?/i', $string, $match); 
    echo $match[0]; // outputs 2:30PM 
    

    같은 정규식 표현은 모두 문자열 예 일치합니다, 또한뿐만 아니라 '에서'부분을 가져옵니다.

    +0

    많은 감사,이 작품! – jfurtado

    0

    다음 코드를 사용하여 해결할 수 있습니다. regex.
    /\d{1,2}:\d{2}(?:a|p)m(?: to \d{1,2}:\d{2}(?:a|p)m)*/i