使用preg_match_all获取图像名称

Zuk*_*ker 1 php regex xml dom

使用curl后,我从外部页面获得了所有源代码,有这样的东西(我感兴趣的部分)

   (page...)<td valign='top' class='rdBot' align='center'><img src="/images/buy_tickets.gif" border="0" alt="T"></td> (page...)
Run Code Online (Sandbox Code Playgroud)

所以我使用的是preg_match_all,我只想获得"buy_tickets.gif"

$pattern_before = "<td valign='top' class='rdBot' align='center'>";
$pattern_after = "</td>";
$pattern = '#'.$pattern_before.'(.*?)'.$pattern_after.'#si';

preg_match_all($pattern, $buffer, $matches, PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好......但问题是因为有时外部页面会发生变化而我正在寻找它的图像在链接中

(page...)<td valign='top' class='rdBot' align='center'><a href="blaa" title="ble"><img src="/images/buy_tickets.gif" border="0" alt="T"></a></td> (page...)
Run Code Online (Sandbox Code Playgroud)

我不知道如何让我的代码始终工作(不仅仅是当图像没有链接时)

希望你明白

提前致谢

Sal*_*bas 5

不要使用正则表达式来解析HTML,使用PHP的DOM扩展.试试这个:

$doc = new DOMDocument;

@$doc->loadHTMLFile( 'http://ventas.entradasmonumental.com/eventperformances.asp?evt=18' ); // Using the @ operator to hide parse errors

$xpath  = new DOMXPath( $doc );

$img = $xpath->query( '//td[@class="BrdBot"][@align="center"][1]//img[1]')->item( 0 ); // Xpath->query returns a 'DOMNodeList', get the first item which is a 'DOMElement' (or null)

$imgSrc = $img->getAttribute( 'src' );

$imgSrcInfo = pathInfo( $imgSrc );

$imgFilename = $imgSrcInfo['basename']; // All you need
Run Code Online (Sandbox Code Playgroud)