PS: このコードに DOM などを使用することはできません。これは、管理が不十分なサイトからの膨大な数のエラーが含まれている html コードに対して Xpath が機能しないためです。これは私にとって最も簡単な方法です。
エラーのあるhtmlコードからの次のhtmlスニペットがあります。
<td width="11%">Train Number</Td>
<td width="16%">Train Name</td>
<td width="18%">Boarding Date <br>(DD-MM-YYYY)</td>
<td width="7%">From</Td>
<td width="7%">To</Td>
<td width="14%">Reserved Upto</Td>
<td width="21%">Boarding Point</Td>
<td width="6%">Class</Td>
</TR>
<TR>
<TD class="table_border_both">*12018</TD>
<TD class="table_border_both">DEHRADUN SHTBDI</TD>
<TD class="table_border_both"> 9- 9-2012</TD>
<TD class="table_border_both">DDN </TD>
<TD class="table_border_both">RK </TD>
<TD class="table_border_both">RK </TD>
<TD class="table_border_both">DDN </TD>
<TD class="table_border_both"> CC</TD>
正規表現を使用して、最後の 8 つの TD の値を取得したいと考えています。したがって、ヒアドキュメント内に配置すると一致しません。このパターン(そのまま)が一致するように、ヒアドキュメント内にどのように配置すればよいですか?
私はこのようにしようとしています:
$trainpattern = <<<EOT
<td width="11%">Train Number</Td>
<td width="16%">Train Name</td>
<td width="18%">Boarding Date <br>[(]DD-MM-YYYY[)]</td>
<td width="7%">From</Td>
<td width="7%">To</Td>
<td width="14%">Reserved Upto</Td>
<td width="21%">Boarding Point</Td>
<td width="6%">Class</Td>
</TR>
<TR>
<TD class="table_border_both">[*]12018</TD>
<TD class="table_border_both">DEHRADUN SHTBDI</TD>
<TD class="table_border_both"> 9- 9-2012</TD>
<TD class="table_border_both">DDN </TD>
<TD class="table_border_both">RK </TD>
<TD class="table_border_both">RK </TD>
<TD class="table_border_both">DDN </TD>
<TD class="table_border_both"> CC</TD>
EOT;
$ret = preg_match("#$trainpattern#s",$filetext,$matches);
また、最初の 2 行だけを取り、それらを \s+ で 1 行に結合すると一致しますが、まったく結合せずに行を一致させる方法を探しています。その場合、\n\r を \s* に置き換える必要があるかもしれません。