日付ごとに取得した結果をグループ化しようとしています。
私の以前の質問を参照してください。 文字列内の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 解析ライブラリは使用したくないので、現在使用している正規表現よりもはるかに優れたソリューションがない限り、お勧めしません。