Search code examples
phpparsingdomstrpos

Php parse string error


I am extracting files from a string which can be entered by a user or taken from reading a page source.

I want to extract all .jpg image URLs

So, I am using the following (example text shown) but a) it only returns the first one and b) it misses off '.jpg'

$word1='http://';
$word2='.jpg';

$contents = 'uuuuyyyyyhttp://image.jpgandagainhereitishttp://image2.jpgxxxxcccffff';

$between=substr($contents, strpos($contents, $word1), strpos($contents, $word2) - strpos($contents, $word1));

echo $between;  

Is there maybe a better way to do this?

In the case of parsing a web page I cannot use a simple DOM e.g. $images = $dom->getElementsByTagName('img'); as sometimes the image references are not in standard tags


Solution

  • You can do something like this :

    <?php
    
    $contents = 'uuuuyyyyyhttp://image.jpgandagainhereitishttp://image2.jpgxxxxcccffff';
    
    $matches = array();
    
    preg_match_all('#(http://[^\s]*?\.jpg)#i',$matches);
    
    print_r($matches);