PHP在URL中获取特定的图像路径<img/>

时间:2015-07-09 22:23:29

标签: php html dom

我正试图从网址中获取特定图片。 例如,如果www.domain.com有

<img id="image100" src="images/dog.jpg">

我正试图从特定的img标签中获取路径。

我尝试了两种不同的方式:

$matches = array();
preg_match_all('/<img id="image100" (.*?)src="(.*?)"\/>/i', file_get_contents($url), $matches);
echo $matches[1];

错误: 注意:Array to string conversion

$dom = new DOMDocument;
$dom->loadHTMLFile($url);
$DOMxpath = new DOMXPath($dom);
$image = $DOMxpath->query("//*[@class='image100]");
echo $image->item(0)->getAttribute('src');

错误:

Fatal error: Call to a member function item() on a non-object 

2 个答案:

答案 0 :(得分:0)

拥有file_get_contents就像$ img:

$img = '<img id="image100" src="images/dog.jpg">';

$resp = preg_match_all('/\<img\sid="image100"\ssrc="(.*?)"\/?\>/',$img,$result);

var_dump($result)

/* response:
array (size=2)
  0 => 
    array (size=1)
      0 => string '<img id="image100" src="images/dog.jpg">' (length=40)
  1 => 
    array (size=1)
      0 => string 'images/dog.jpg' (length=14)
*/

答案 1 :(得分:0)

正则表达式应该是这样的:

    /<img id="image100".*?src="(.*?)"/

快速解释这里发生的事情:
。匹配除新行之外的单个字符
*?意味着重复前一个标记 ()分隔捕获组,您要提取的内容。
/逃脱角色/ ?使前一个字符可选

基本上,这就是说:在字符串中查找以

开头的子字符串
    <img id="image100"

之后包含任意数量的字符,然后继续使用src =&#34;&#34;,然后匹配&#34;&#34;之间的任何内容。

测试正则表达式的一个很好的工具是:https://regex101.com/r/eB8rU8/1