0

日付ごとに取得した結果をグループ化しようとしています。

私の以前の質問を参照してください。 文字列内のhttpリンクを無視して他のすべてを返す方法は?

基本的には今スケジュールリストを取得していますが、日付が含まれていないため、どのイベントがどの日時にライブになるかわかりにくく、同じタイミングを示しているため、日付がないため混乱しています.実際には別の日にライブになる複数のイベント。

前の質問から、私は完璧な解決策を得ました (解決策を提供してくれた Denomales に感謝します!) が、日付がありません。

ソリューションの正規表現は次のとおりです。

<font(?=\s|>)(?=(?:[^>=|&)]*|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\scolor=['"]?green['"]?)(?:[^>=|&)]|='(?:[^']|\\')*'|="(?:[^"]|\\")*"|=[^'"][^\s>]*)*>\s*(?:Stream\s*)?((?:(?!<\/font>).)*)<\/font>\s*[^<]*?([^<]+)\s+(\d+.\d+\s*\w{2}\s*-\s*\d+.\d+\s*\w{2})[^<]*?<font(?=\s|>)(?=(?:[^>=|&)]*|='[^']*'|="[^"]*"|=[^'"][^\s>]*)*?\scolor=['"]?gold['"]?)(?:[^>=|&)]|='(?:[^']|\\')*'|="(?:[^"]|\\")*"|=[^'"][^\s>]*)*>(?:Stream\s*)?((?:(?!\s*https?:|<\/font>).)*)

サンプルデータは次のとおりです。

<font color="black" size="6">---</font><p>
<font color="red" size="6">FRIDAY 6TH SEPTEMBER</font><p>
<font color="gold"> *ENGLISH* </font> Some event with quotes, comma, slashes, dots and more 9.00pm-5.00pm <font color="red">Channel 18</font><p>
<font color="gold"> *ITALIAN* </font> Some event with quotes, comma, slashes, dots and more 9.50pm-10.00pm <font color="red">Channel 02</font><p>
<font color="gold"> *ENGLISH* </font> Some event with quotes, comma, slashes, dots and more 10:00AM-12:00pm <font color="red">Channel 05</font><p>
<font color="gold"> *JAPANESE* </font> Some Event Name 11.20am-1.20pm <font color="red">CHANNEL IP 2 STREAM http://domain.com/abc/channel2.html</font><p>
<font color="black" size="6">---</font><p>
<font color="red" size="6">FRIDAY 7TH SEPTEMBER</font><p>
<font color="gold"> *ENGLISH* </font> Some event with quotes, comma, slashes, dots and more 9.00pm-5.00pm <font color="red">Channel 18</font><p>
<font color="gold"> *ITALIAN* </font> Some event with quotes, comma, slashes, dots and more 9.50pm-10.00pm <font color="red">Channel 02</font><p>
<font color="gold"> *ENGLISH* </font> Some event with quotes, comma, slashes, dots and more 10:00AM-12:00pm <font color="red">Channel 05</font><p>
<font color="gold"> *JAPANESE* </font> Some Event Name 11.20am-1.20pm <font color="red">CHANNEL IP 2 STREAM http://domain.com/abc/channel2.html</font><p>

FRIDAY 6TH SEPTEMBER今、日付 ( ) をYYYY-MM-DD形式で取得してから、イベントのスケジュールを取得しようとしています。

出力例:

Array(
  ['2013-09-06'] => Array (
    [0] => Array (
      'language'   => 'ENGLISH',
      'title'      => 'Some event name',
      'startTime'  => '9:00pm',
      'endTime'    => '5:00pm',
      'channel'    => 'channel 18',
      'channelNum' => '18'
    ),
    [1] => Array (
      'language'   => 'ITALIAN',
      'title'      => 'Some event name',
      'startTime'  => '12:00pm',
      'endTime'    => '2:00pm',
      'channel'    => 'Channel IP 2',
      'channelNum' => '2'
    ),
    [2] => Array (
      'language'   => 'ENGLISH',
      'title'      => 'Some event name',
      'startTime'  => '6:00pm',
      'endTime'    => '8:00pm',
      'channel'    => 'channel 20',
      'channelNum' => '20'
    ),
  ),
  ['2013-09-07'] => Array (
    [0] => Array (
      'language'   => 'ENGLISH',
      'title'      => 'Some event name',
      'startTime'  => '9:00pm',
      'endTime'    => '5:00pm',
      'channel'    => 'channel 18',
      'channelNum' => '18'
    ),
    [1] => Array (
      'language'   => 'ITALIAN',
      'title'      => 'Some event name',
      'startTime'  => '12:00pm',
      'endTime'    => '2:00pm',
      'channel'    => 'Channel IP 2',
      'channelNum' => '2'
    ),
    [2] => Array (
      'language'   => 'ENGLISH',
      'title'      => 'Some event name',
      'startTime'  => '6:00pm',
      'endTime'    => '8:00pm',
      'channel'    => 'channel 20',
      'channelNum' => '20'
    ),
  ),
)

出力例はランダムに作成された出力であり、実際のデータなどではありません。

誰でも助けることができますか?本当に感謝します。

注: HTML 解析ライブラリは使用したくないので、現在使用している正規表現よりもはるかに優れたソリューションがない限り、お勧めしません。

4

0 に答える 0