我试图在存在时匹配可选链接/标题,如果没有链接,只需匹配标签内的文本。
表示例:
$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'