0

我正在使用以下内容来解析 html 页面并返回图像:

$html = file_get_html($url);

foreach($html->find('img') as $e){ 

    $image = $e->src;

            }

理想情况下,虽然我只想显示带有 .jpg 扩展名的文件 - 我知道我可能可以使用 preg_match 但有更有效的方法吗?

4

3 回答 3

3

注意:仅仅因为文件具有类似 JPEG 的扩展名并不意味着引用文件的内容实际上是 JPEG 数据!


pathinfo()是您正在寻找的原生 PHP 函数。是的,您可以随心所欲地操纵字符串,但如果您正在寻找“正确”的方式来做到这一点,那么这里是:

$html = file_get_html($url);

// file extensions we are looking for
$allowedExtensions = ['jpg', 'jpeg', 'jpe'];

foreach($html->find('img') as $el){ 
    // file extensions are usually treated as case insensitive, but the
    // implied comparison operator used with in_array() is case sensitive
    // so normalise the data to lower-case.
    $extension = strtolower(pathinfo($el->src, PATHINFO_EXTENSION));

    if (in_array($extension, $allowedExtensions)) {
        // File has a JPEG-like file extension
    }
}
于 2012-04-04T12:04:30.723 回答
3

你的代码很好。这将适用于您的情况

// Create DOM from URL or file
$html = file_get_html('http://www.yahoo.com/');
// Find all images
foreach($html->find('img') as $element)
{
    $img = strtolower($element->src);
    if(pathinfo($img,PATHINFO_EXTENSION) == "jpg")
        echo $element->src . '<br>';
}
于 2012-04-04T12:11:28.163 回答
0
$split = explode(".", $image);
$extention = $split[count($split)-1];
于 2012-04-04T12:03:49.080 回答