我试过了
$content =file_get_contents("http://www.starplugins.com/cloudzoom");
preg_match('/<img[\s\S][^>]*src="([^"]*)"[^>]*id="zoom1"[^>]*>/',$content,$arr);
print_r($arr);
它返回空数组,但是当仅获取 html 部分并使用Rubular进行测试时, 它会给出正确的输出。请帮助弄清楚
我试过了
$content =file_get_contents("http://www.starplugins.com/cloudzoom");
preg_match('/<img[\s\S][^>]*src="([^"]*)"[^>]*id="zoom1"[^>]*>/',$content,$arr);
print_r($arr);
它返回空数组,但是当仅获取 html 部分并使用Rubular进行测试时, 它会给出正确的输出。请帮助弄清楚
尝试这个:
/\<img.*?id\=["\']zoom1["\'].*?src\=["\'](.+?)["\'][\s]{0,}.*?\/{0,1}\>/ims
如果它返回 false,他们尝试这个:
/\<img.*?src\=["\'](.+?)["\'][\s]{0,}.*?id\=["\']zoom1["\'].*?\/{0,1}\>/ims
.
基本上,正则表达式将高度依赖于 id 和 src 的顺序。
但是,由于我们在这里处理的是 html,因此最好使用 DOM/XPath。
您应该改用 DOM:
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$src = $xpath->query('//img[@id="zoom1"]')->item(0)->getAttribute('src');
真的这么容易和正确的使用方法=)