由于您是新手,我将解释您可以使用 PHP 的 HTML 解析器DOMDocument
来提取您需要的内容。您不应该使用正则表达式,因为它们在解析 HTML 时天生就容易出错,并且很容易导致许多误报。
首先,假设您有 HTML:
$html = '<a href="http://www.mydomain.com/galeria/thumbnails.php?album=774" target="_blank"><img alt="/" src="http://img255.imageshack.us/img00/000/000001.png" height="133" width="113"></a>';
现在,我们将它加载到 DOMDocument 中:
$doc = new DOMDocument;
$doc->loadHTML( $html);
现在,我们已经加载了 HTML,是时候找到我们需要的元素了。假设您可以<a>
在文档中遇到其他标签,因此我们希望找到那些<a>
具有直接<img>
标签作为子标签的标签。然后,检查以确保我们有正确的节点,我们需要确保我们提取正确的信息。所以,让我们开始吧:
$results = array();
// Loop over all of the <a> tags in the document
foreach( $doc->getElementsByTagName( 'a') as $a) {
// If there are no children, continue on
if( !$a->hasChildNodes()) continue;
// Find the child <img> tag, if it exists
foreach( $a->childNodes as $child) {
if( $child->nodeType == XML_ELEMENT_NODE && $child->tagName == 'img') {
// Now we have the <a> tag in $a and the <img> tag in $child
// Get the information we need:
parse_str( parse_url( $a->getAttribute('href'), PHP_URL_QUERY), $a_params);
$results[] = array( $a_params['album'], $child->getAttribute('src'));
}
}
}
Aprint_r( $results);
现在给我们留下:
Array
(
[0] => Array
(
[0] => 774
[1] => http://img255.imageshack.us/img00/000/000001.png
)
)
请注意,这省略了基本的错误检查。您可以添加的一件事是在内部foreach
循环中,您可以检查以确保成功解析了's属性中的album
参数,如下所示:<a>
href
if( isset( $a_params['album'])) {
$results[] = array( $a_params['album'], $child->getAttribute('src'));
}
我在其中使用的每个函数都可以在PHP 文档中找到。