Home  >  Article  >  Backend Development  >  PHP cannot get image src

PHP cannot get image src

WBOY
WBOYOriginal
2023-05-07 10:28:11786browse

With the continuous development of network technology, web pages not only use text as the main content, but also gradually move toward the integration of multimedia elements such as pictures, audio, and video. Nowadays, when we visit web pages, we rely more on these multimedia elements, which enrich our aesthetic experience and make the pages more vivid and intuitive.

Among them, pictures are one of the most common multimedia elements. In web development, using images can enrich page content and enrich user experience. Sometimes, we need to obtain the src address of the image on the server side to perform related operations. In PHP, there are many ways to get the src address of an image, but you may encounter some problems, causing the acquisition to fail. This article will introduce in detail the reasons and solutions for why PHP cannot obtain the image src.

1. Methods to get the src of the image

In PHP, there are many ways to get the src address of the image. Here are two common methods.

  1. Use regular expressions to get the image src

In HTML, the src of the image address is usually written in the src attribute in the img tag. Therefore, we can use regular expressions to get the src attribute value in the img tag.

function getImgSrc($html){
    $pattern = '/<img.*?src="(.*?)".*?>/is';
    preg_match_all($pattern, $html, $matches);
    $src_array = $matches[1];
    return $src_array;
}

In the above function, $html is the string form of an html page. Use regular expressions to match the src attribute values ​​of all img tags in HTML and return an array $src_array, which stores the src addresses of all images.

  1. Use DOMDocument to get the image src

DOMDocument is one of the main tools for working with XML and HTML documents in PHP. It provides a series of methods to easily obtain elements and their attributes in an HTML document. We can use DOMDocument to get the src attribute value of the img tag.

function getImgSrc($html){
    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $xpath = new DOMXPath($dom);
    $src_array = array();
    $img_list = $xpath->query('//img');
    foreach($img_list as $img){
        $src_array[] = $img->getAttribute('src');
    }
    return $src_array;
}

In the above function, $html is also the string form of an html page. Using DOMDocument, create a document object $dom and use the loadHTML method to load the html page. Next, use DOMXPath to obtain all img tags, and then traverse each img tag to obtain its src attribute value.

2. Reasons and solutions for acquisition failure

When using the above method to obtain the image src, you may encounter acquisition failure. Here are several possible causes and corresponding solutions.

  1. The incoming html is incomplete

The $html parameter passed in the getImgSrc function should be a complete html document, but sometimes, we only get part of it Page content, or some incomplete tags in the HTML document will cause the acquisition to fail. At this point, we need to ensure that the incoming html document is complete and correct.

  1. The picture src uses a relative path

Sometimes, the src attribute of the picture uses a relative path, so when we get the picture on the server side, we need to change it Convert to absolute path. You can use PHP's dirname function and parse_url function to convert relative paths into absolute paths.

function getAbsoluteUrl($base, $relative){
    $parse_base = parse_url($base);
    if(!isset($parse_base['path'])){
        $parse_base['path'] = '/';
    }
    $dir = dirname($parse_base['path']);
    if($relative[0] == '/'){
        $relative = substr($relative, 1);
    }
    if($relative[0] == '.'){
        $i = 0;
        while(substr($relative, 0, 2) == './'){
            $relative = substr($relative, 2);
        }
        $dir .= '/';
    }
    $result = $parse_base['scheme']."://".$parse_base['host'];
    if(isset($parse_base['port']) && $parse_base['port'] != '80'){
        $result .= ':'.$parse_base['port'];
    }
    $result .= $dir.$relative;
    return $result;
}

In the above function, $base is the base address of the relative path, and $relative is the relative path. Use the dirname function to obtain the directory path $dir of the base address, and then splice out the complete absolute path based on the relative path.

  1. Network reasons

Getting the image src will also be affected by the network environment. If the network is unstable or interrupted, the acquisition will fail. At this time, you can try to obtain it again or wait for the network to stabilize and try to obtain it again.

To sum up, this article introduces the reasons and solutions for why PHP cannot obtain the image src. Obtaining image src on the server side is a common development requirement. Mastering the acquisition method and some solutions when encountering problems can better improve development efficiency and reduce the impact of problems.

The above is the detailed content of PHP cannot get image src. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn