我正试图从网址中获取特定图片。 例如,如果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
答案 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