0

我试过了

$content =file_get_contents("http://www.starplugins.com/cloudzoom");
preg_match('/<img[\s\S][^>]*src="([^"]*)"[^>]*id="zoom1"[^>]*>/',$content,$arr);
print_r($arr);

它返回空数组,但是当仅获取 html 部分并使用Rubular进行测试时, 它会给出正确的输出。请帮助弄清楚

4

2 回答 2

2

尝试这个:

/\<img.*?id\=["\']zoom1["\'].*?src\=["\'](.+?)["\'][\s]{0,}.*?\/{0,1}\>/ims

如果它返回 false,他们尝试这个:

/\<img.*?src\=["\'](.+?)["\'][\s]{0,}.*?id\=["\']zoom1["\'].*?\/{0,1}\>/ims

.

基本上,正则表达式将高度依赖于 id 和 src 的顺序。

但是,由于我们在这里处理的是 html,因此最好使用 DOM/XPath。

于 2013-04-25T12:33:06.490 回答
1

您应该改用 DOM:

$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);

$src = $xpath->query('//img[@id="zoom1"]')->item(0)->getAttribute('src');

真的这么容易和正确的使用方法=)

于 2013-04-25T12:36:49.477 回答