リンクがない場合は、タグ内のテキストと一致するだけです。
テーブルの例:
$html_data = <<<HTML
<table>
<tr> <td> Some text here </td> </tr>
<tr> <td> Some text with link <a href="http://domain1.com/">Link Title 1</a> </td> </tr>
<tr> <td> Some text here without link </td> </tr>
<tr> <td> Some text with link <a href="http://domain2.com/">Link Title 2</a> and more text </td> </tr>
</table>
HTML;
コード例:
preg_match_all('~<tr> <td> (?:<a href="(.*?)">(.*?)</a>)? (.*?) </td> </tr>~i', $html_data, $result);
したがって、存在する場合はプレーンテキストとリンク+タイトルを取得して、配列に入れる必要があります。
リンクが存在する場合、このようなもの。
'text_before' => 'Some text with link'
'link_href' => 'http://domain2.com/'
'link_title => 'Link Title 2'
'text_after' => 'and more text'
リンクがない場合は、「td」タグの間で使用可能なテキストを単純に一致させます。
リンクがない場合は、このようなものです。
'text' => 'Some text here without link'